Skip to content

Commit b562e6a

Browse files
author
Sean Dague
committed
move horizon logic to lib to clean up stack.sh
pre holiday refactor extrodinare, get the horizon code over fully into lib/horizon so that all these fixes aren't scattered through stack.sh Change-Id: I7f26c5c6708d5693048eb7b1ce792122adbc7351
1 parent 2e8884d commit b562e6a

3 files changed

Lines changed: 142 additions & 66 deletions

File tree

lib/horizon

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# lib/horizon
2+
# Functions to control the configuration and operation of the horizon service
3+
# <do not include this template file in ``stack.sh``!>
4+
5+
# Dependencies:
6+
# ``functions`` file
7+
# ``SERVICE_{TENANT_NAME|PASSWORD}`` must be defined
8+
# <list other global vars that are assumed to be defined>
9+
10+
# ``stack.sh`` calls the entry points in this order:
11+
#
12+
# install_horizon
13+
# configure_horizon
14+
# init_horizon
15+
# start_horizon
16+
# stop_horizon
17+
# cleanup_horizon
18+
19+
# Save trace setting
20+
XTRACE=$(set +o | grep xtrace)
21+
set +o xtrace
22+
23+
24+
# Defaults
25+
# --------
26+
27+
# <define global variables here that belong to this project>
28+
29+
# Set up default directories
30+
HORIZON_DIR=$DEST/horizon
31+
32+
# Allow overriding the default Apache user and group, default both to
33+
# current user.
34+
APACHE_USER=${APACHE_USER:-$USER}
35+
APACHE_GROUP=${APACHE_GROUP:-$APACHE_USER}
36+
37+
38+
# Entry Points
39+
# ------------
40+
41+
# cleanup_horizon() - Remove residual data files, anything left over from previous
42+
# runs that a clean run would need to clean up
43+
function cleanup_horizon() {
44+
# kill instances (nova)
45+
# delete image files (glance)
46+
# This function intentionally left blank
47+
:
48+
}
49+
50+
# configure_horizon() - Set config files, create data dirs, etc
51+
function configure_horizon() {
52+
setup_develop $HORIZON_DIR
53+
}
54+
55+
# init_horizon() - Initialize databases, etc.
56+
function init_horizon() {
57+
# Remove stale session database.
58+
rm -f $HORIZON_DIR/openstack_dashboard/local/dashboard_openstack.sqlite3
59+
60+
# ``local_settings.py`` is used to override horizon default settings.
61+
local_settings=$HORIZON_DIR/openstack_dashboard/local/local_settings.py
62+
cp $FILES/horizon_settings.py $local_settings
63+
64+
# Initialize the horizon database (it stores sessions and notices shown to
65+
# users). The user system is external (keystone).
66+
cd $HORIZON_DIR
67+
python manage.py syncdb --noinput
68+
cd $TOP_DIR
69+
70+
# Create an empty directory that apache uses as docroot
71+
sudo mkdir -p $HORIZON_DIR/.blackhole
72+
73+
74+
if [[ "$os_PACKAGE" = "deb" ]]; then
75+
APACHE_NAME=apache2
76+
APACHE_CONF=sites-available/horizon
77+
# Clean up the old config name
78+
sudo rm -f /etc/apache2/sites-enabled/000-default
79+
# Be a good citizen and use the distro tools here
80+
sudo touch /etc/$APACHE_NAME/$APACHE_CONF
81+
sudo a2ensite horizon
82+
else
83+
# Install httpd, which is NOPRIME'd
84+
APACHE_NAME=httpd
85+
APACHE_CONF=conf.d/horizon.conf
86+
sudo sed '/^Listen/s/^.*$/Listen 0.0.0.0:80/' -i /etc/httpd/conf/httpd.conf
87+
fi
88+
89+
# Configure apache to run horizon
90+
sudo sh -c "sed -e \"
91+
s,%USER%,$APACHE_USER,g;
92+
s,%GROUP%,$APACHE_GROUP,g;
93+
s,%HORIZON_DIR%,$HORIZON_DIR,g;
94+
s,%APACHE_NAME%,$APACHE_NAME,g;
95+
s,%DEST%,$DEST,g;
96+
\" $FILES/apache-horizon.template >/etc/$APACHE_NAME/$APACHE_CONF"
97+
98+
}
99+
100+
# install_horizon() - Collect source and prepare
101+
function install_horizon() {
102+
# Apache installation, because we mark it NOPRIME
103+
if [[ "$os_PACKAGE" = "deb" ]]; then
104+
# Install apache2, which is NOPRIME'd
105+
install_package apache2 libapache2-mod-wsgi
106+
else
107+
sudo rm -f /etc/httpd/conf.d/000-*
108+
install_package httpd mod_wsgi
109+
fi
110+
111+
# NOTE(sdague) quantal changed the name of the node binary
112+
if [[ "$os_PACKAGE" = "deb" ]]; then
113+
if [[ ! -e "/usr/bin/node" ]]; then
114+
install_package nodejs-legacy
115+
fi
116+
fi
117+
118+
git_clone $HORIZON_REPO $HORIZON_DIR $HORIZON_BRANCH $HORIZON_TAG
119+
}
120+
121+
# start_horizon() - Start running processes, including screen
122+
function start_horizon() {
123+
restart_service $APACHE_NAME
124+
screen_it horizon "cd $HORIZON_DIR && sudo tail -f /var/log/$APACHE_NAME/horizon_error.log"
125+
}
126+
127+
# stop_horizon() - Stop running processes (non-screen)
128+
function stop_horizon() {
129+
stop_service apache2
130+
}
131+
132+
# Restore xtrace
133+
$XTRACE

stack.sh

Lines changed: 7 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
306306
# ==================
307307

308308
# Get project function libraries
309+
source $TOP_DIR/lib/horizon
309310
source $TOP_DIR/lib/keystone
310311
source $TOP_DIR/lib/glance
311312
source $TOP_DIR/lib/nova
@@ -568,15 +569,6 @@ read_password ADMIN_PASSWORD "ENTER A PASSWORD TO USE FOR HORIZON AND KEYSTONE (
568569
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
569570

570571

571-
# Horizon
572-
# -------
573-
574-
# Allow overriding the default Apache user and group, default both to
575-
# current user.
576-
APACHE_USER=${APACHE_USER:-$USER}
577-
APACHE_GROUP=${APACHE_GROUP:-$APACHE_USER}
578-
579-
580572
# Log files
581573
# ---------
582574

@@ -756,16 +748,6 @@ if is_service_enabled $DATABASE_BACKENDS; then
756748
install_database
757749
fi
758750

759-
if is_service_enabled horizon; then
760-
if [[ "$os_PACKAGE" = "deb" ]]; then
761-
# Install apache2, which is NOPRIME'd
762-
install_package apache2 libapache2-mod-wsgi
763-
else
764-
sudo rm -f /etc/httpd/conf.d/000-*
765-
install_package httpd mod_wsgi
766-
fi
767-
fi
768-
769751
if is_service_enabled q-agt; then
770752
if is_quantum_ovs_base_plugin "$Q_PLUGIN"; then
771753
# Install deps
@@ -840,8 +822,8 @@ if is_service_enabled n-novnc; then
840822
git_clone $NOVNC_REPO $NOVNC_DIR $NOVNC_BRANCH
841823
fi
842824
if is_service_enabled horizon; then
843-
# django powered web control panel for openstack
844-
git_clone $HORIZON_REPO $HORIZON_DIR $HORIZON_BRANCH $HORIZON_TAG
825+
# dashboard
826+
install_horizon
845827
fi
846828
if is_service_enabled quantum; then
847829
git_clone $QUANTUM_CLIENT_REPO $QUANTUM_CLIENT_DIR $QUANTUM_CLIENT_BRANCH
@@ -899,7 +881,7 @@ if is_service_enabled nova; then
899881
configure_nova
900882
fi
901883
if is_service_enabled horizon; then
902-
setup_develop $HORIZON_DIR
884+
configure_horizon
903885
fi
904886
if is_service_enabled quantum; then
905887
setup_develop $QUANTUM_CLIENT_DIR
@@ -1035,48 +1017,8 @@ fi
10351017

10361018
if is_service_enabled horizon; then
10371019
echo_summary "Configuring and starting Horizon"
1038-
1039-
# Remove stale session database.
1040-
rm -f $HORIZON_DIR/openstack_dashboard/local/dashboard_openstack.sqlite3
1041-
1042-
# ``local_settings.py`` is used to override horizon default settings.
1043-
local_settings=$HORIZON_DIR/openstack_dashboard/local/local_settings.py
1044-
cp $FILES/horizon_settings.py $local_settings
1045-
1046-
# Initialize the horizon database (it stores sessions and notices shown to
1047-
# users). The user system is external (keystone).
1048-
cd $HORIZON_DIR
1049-
python manage.py syncdb --noinput
1050-
cd $TOP_DIR
1051-
1052-
# Create an empty directory that apache uses as docroot
1053-
sudo mkdir -p $HORIZON_DIR/.blackhole
1054-
1055-
if [[ "$os_PACKAGE" = "deb" ]]; then
1056-
APACHE_NAME=apache2
1057-
APACHE_CONF=sites-available/horizon
1058-
# Clean up the old config name
1059-
sudo rm -f /etc/apache2/sites-enabled/000-default
1060-
# Be a good citizen and use the distro tools here
1061-
sudo touch /etc/$APACHE_NAME/$APACHE_CONF
1062-
sudo a2ensite horizon
1063-
else
1064-
# Install httpd, which is NOPRIME'd
1065-
APACHE_NAME=httpd
1066-
APACHE_CONF=conf.d/horizon.conf
1067-
sudo sed '/^Listen/s/^.*$/Listen 0.0.0.0:80/' -i /etc/httpd/conf/httpd.conf
1068-
fi
1069-
1070-
# Configure apache to run horizon
1071-
sudo sh -c "sed -e \"
1072-
s,%USER%,$APACHE_USER,g;
1073-
s,%GROUP%,$APACHE_GROUP,g;
1074-
s,%HORIZON_DIR%,$HORIZON_DIR,g;
1075-
s,%APACHE_NAME%,$APACHE_NAME,g;
1076-
s,%DEST%,$DEST,g;
1077-
\" $FILES/apache-horizon.template >/etc/$APACHE_NAME/$APACHE_CONF"
1078-
1079-
restart_service $APACHE_NAME
1020+
init_horizon
1021+
start_horizon
10801022
fi
10811023

10821024

@@ -1958,7 +1900,7 @@ if is_service_enabled ceilometer; then
19581900
echo_summary "Starting Ceilometer"
19591901
start_ceilometer
19601902
fi
1961-
screen_it horizon "cd $HORIZON_DIR && sudo tail -f /var/log/$APACHE_NAME/horizon_error.log"
1903+
19621904
screen_it swift "cd $SWIFT_DIR && $SWIFT_DIR/bin/swift-proxy-server ${SWIFT_CONFIG_DIR}/proxy-server.conf -v"
19631905

19641906
# Starting the nova-objectstore only if swift3 service is not enabled.

unstack.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ DATA_DIR=${DATA_DIR:-${DEST}/data}
2626

2727
# Get project function libraries
2828
source $TOP_DIR/lib/cinder
29+
source $TOP_DIR/lib/horizon
2930

3031
# Determine what system we are running on. This provides ``os_VENDOR``,
3132
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
@@ -51,7 +52,7 @@ fi
5152

5253
# Apache has the WSGI processes
5354
if is_service_enabled horizon; then
54-
stop_service apache2
55+
stop_horizon
5556
fi
5657

5758
SCSI_PERSIST_DIR=$CINDER_STATE_PATH/volumes/*

0 commit comments

Comments
 (0)