blob: efce3832226c8753fcbf2302e3b1b796dfa0d66a [file] [log] [blame]
Sean Daguee263c822014-12-05 14:25:28 -05001#!/bin/bash
2#
Dean Troyer9a532b82013-09-23 13:44:38 -05003# lib/nova_plugins/hypervisor-xenserver
4# Configure the XenServer hypervisor
5
6# Enable with:
7# VIRT_DRIVER=xenserver
8
9# Dependencies:
10# ``functions`` file
11# ``nova`` configuration
12
13# install_nova_hypervisor - install any external requirements
14# configure_nova_hypervisor - make configuration changes, including those to other services
15# start_nova_hypervisor - start any external services
16# stop_nova_hypervisor - stop any external services
17# cleanup_nova_hypervisor - remove transient data and cache
18
19# Save trace setting
20MY_XTRACE=$(set +o | grep xtrace)
21set +o xtrace
22
23
24# Defaults
25# --------
26
27PUBLIC_INTERFACE_DEFAULT=eth2
28GUEST_INTERFACE_DEFAULT=eth1
29# Allow ``build_domU.sh`` to specify the flat network bridge via kernel args
30FLAT_NETWORK_BRIDGE_DEFAULT=$(sed -e 's/.* flat_network_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline)
31if is_service_enabled neutron; then
32 XEN_INTEGRATION_BRIDGE=$(sed -e 's/.* xen_integration_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline)
33fi
34
35VNCSERVER_PROXYCLIENT_ADDRESS=${VNCSERVER_PROXYCLIENT_ADDRESS=169.254.0.1}
36
37
38# Entry Points
39# ------------
40
41# clean_nova_hypervisor - Clean up an installation
Ian Wienandaee18c72014-02-21 15:35:08 +110042function cleanup_nova_hypervisor {
Dean Troyer9a532b82013-09-23 13:44:38 -050043 # This function intentionally left blank
44 :
45}
46
47# configure_nova_hypervisor - Set config files, create data dirs, etc
Ian Wienandaee18c72014-02-21 15:35:08 +110048function configure_nova_hypervisor {
Dean Troyer9a532b82013-09-23 13:44:38 -050049 if [ -z "$XENAPI_CONNECTION_URL" ]; then
50 die $LINENO "XENAPI_CONNECTION_URL is not specified"
51 fi
52 read_password XENAPI_PASSWORD "ENTER A PASSWORD TO USE FOR XEN."
53 iniset $NOVA_CONF DEFAULT compute_driver "xenapi.XenAPIDriver"
Bob Ball786a3a32014-06-16 08:37:05 +010054 iniset $NOVA_CONF xenserver connection_url "$XENAPI_CONNECTION_URL"
55 iniset $NOVA_CONF xenserver connection_username "$XENAPI_USER"
56 iniset $NOVA_CONF xenserver connection_password "$XENAPI_PASSWORD"
Dean Troyer9a532b82013-09-23 13:44:38 -050057 iniset $NOVA_CONF DEFAULT flat_injected "False"
58 # Need to avoid crash due to new firewall support
59 XEN_FIREWALL_DRIVER=${XEN_FIREWALL_DRIVER:-"nova.virt.firewall.IptablesFirewallDriver"}
60 iniset $NOVA_CONF DEFAULT firewall_driver "$XEN_FIREWALL_DRIVER"
Mate Lakatd15c8a02014-02-04 12:38:14 +000061
62 local dom0_ip
63 dom0_ip=$(echo "$XENAPI_CONNECTION_URL" | cut -d "/" -f 3-)
64
65 local ssh_dom0
66 ssh_dom0="sudo -u $DOMZERO_USER ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$dom0_ip"
67
Bob Ball348ae442014-03-20 16:56:04 +000068 # Find where the plugins should go in dom0
69 xen_functions=`cat $TOP_DIR/tools/xen/functions`
70 PLUGIN_DIR=`$ssh_dom0 "$xen_functions; set -eux; xapi_plugin_location"`
71
Mate Lakatd15c8a02014-02-04 12:38:14 +000072 # install nova plugins to dom0
73 tar -czf - -C $NOVA_DIR/plugins/xenserver/xenapi/etc/xapi.d/plugins/ ./ |
Bob Ball348ae442014-03-20 16:56:04 +000074 $ssh_dom0 "tar -xzf - -C $PLUGIN_DIR && chmod a+x $PLUGIN_DIR/*"
Mate Lakatd15c8a02014-02-04 12:38:14 +000075
76 # install console logrotate script
77 tar -czf - -C $NOVA_DIR/tools/xenserver/ rotate_xen_guest_logs.sh |
78 $ssh_dom0 'tar -xzf - -C /root/ && chmod +x /root/rotate_xen_guest_logs.sh && mkdir -p /var/log/xen/guest'
79
80 # Create a cron job that will rotate guest logs
81 $ssh_dom0 crontab - << CRONTAB
82* * * * * /root/rotate_xen_guest_logs.sh
83CRONTAB
84
85 # Create directories for kernels and images
86 {
87 echo "set -eux"
88 cat $TOP_DIR/tools/xen/functions
89 echo "create_directory_for_images"
90 echo "create_directory_for_kernels"
91 } | $ssh_dom0
92
Dean Troyer9a532b82013-09-23 13:44:38 -050093}
94
95# install_nova_hypervisor() - Install external components
Ian Wienandaee18c72014-02-21 15:35:08 +110096function install_nova_hypervisor {
Sean Dague60996b12015-04-08 09:06:49 -040097 pip_install_gr xenapi
Dean Troyer9a532b82013-09-23 13:44:38 -050098}
99
100# start_nova_hypervisor - Start any required external services
Ian Wienandaee18c72014-02-21 15:35:08 +1100101function start_nova_hypervisor {
Dean Troyer9a532b82013-09-23 13:44:38 -0500102 # This function intentionally left blank
103 :
104}
105
106# stop_nova_hypervisor - Stop any external services
Ian Wienandaee18c72014-02-21 15:35:08 +1100107function stop_nova_hypervisor {
Dean Troyer9a532b82013-09-23 13:44:38 -0500108 # This function intentionally left blank
109 :
110}
111
112
113# Restore xtrace
114$MY_XTRACE
115
116# Local variables:
117# mode: shell-script
118# End: