#!/bin/bash # # lib/nova_plugins/hypervisor-xenserver # Configure the XenServer hypervisor # Enable with: # VIRT_DRIVER=xenserver # Dependencies: # ``functions`` file # ``nova`` configuration # install_nova_hypervisor - install any external requirements # configure_nova_hypervisor - make configuration changes, including those to other services # start_nova_hypervisor - start any external services # stop_nova_hypervisor - stop any external services # cleanup_nova_hypervisor - remove transient data and cache # Save trace setting _XTRACE_XENSERVER=$(set +o | grep xtrace) set +o xtrace # Defaults # -------- # Allow ``build_domU.sh`` to specify the flat network bridge via kernel args FLAT_NETWORK_BRIDGE_DEFAULT=$(sed -e 's/.* flat_network_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline) VNCSERVER_PROXYCLIENT_ADDRESS=${VNCSERVER_PROXYCLIENT_ADDRESS=169.254.0.1} # Entry Points # ------------ # clean_nova_hypervisor - Clean up an installation function cleanup_nova_hypervisor { # This function intentionally left blank : } # configure_nova_hypervisor - Set config files, create data dirs, etc function configure_nova_hypervisor { if [ -z "$XENAPI_CONNECTION_URL" ]; then die $LINENO "XENAPI_CONNECTION_URL is not specified" fi # Check os-xenapi plugin is enabled local plugins="${DEVSTACK_PLUGINS}" local plugin local found=0 for plugin in ${plugins//,/ }; do if [[ "$plugin" = "os-xenapi" ]]; then found=1 break fi done if [[ $found -ne 1 ]]; then die $LINENO "os-xenapi plugin is not specified. Please enable this plugin in local.conf" fi read_password XENAPI_PASSWORD "ENTER A PASSWORD TO USE FOR XEN." iniset $NOVA_CONF DEFAULT compute_driver "xenapi.XenAPIDriver" iniset $NOVA_CONF xenserver connection_url "$XENAPI_CONNECTION_URL" iniset $NOVA_CONF xenserver connection_username "$XENAPI_USER" iniset $NOVA_CONF xenserver connection_password "$XENAPI_PASSWORD" iniset $NOVA_CONF DEFAULT flat_injected "False" # Need to avoid crash due to new firewall support XEN_FIREWALL_DRIVER=${XEN_FIREWALL_DRIVER:-"nova.virt.firewall.IptablesFirewallDriver"} iniset $NOVA_CONF DEFAULT firewall_driver "$XEN_FIREWALL_DRIVER" local dom0_ip dom0_ip=$(echo "$XENAPI_CONNECTION_URL" | cut -d "/" -f 3-) local ssh_dom0 ssh_dom0="sudo -u $DOMZERO_USER ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$dom0_ip" # install console logrotate script tar -czf - -C $NOVA_DIR/tools/xenserver/ rotate_xen_guest_logs.sh | $ssh_dom0 'tar -xzf - -C /root/ && chmod +x /root/rotate_xen_guest_logs.sh && mkdir -p /var/log/xen/guest' # Create a cron job that will rotate guest logs $ssh_dom0 crontab - << CRONTAB * * * * * /root/rotate_xen_guest_logs.sh >/dev/null 2>&1 CRONTAB } # install_nova_hypervisor() - Install external components function install_nova_hypervisor { # xenapi functionality is now included in os-xenapi library which houses the plugin # so this function intentionally left blank : } # start_nova_hypervisor - Start any required external services function start_nova_hypervisor { # This function intentionally left blank : } # stop_nova_hypervisor - Stop any external services function stop_nova_hypervisor { # This function intentionally left blank : } # Restore xtrace $_XTRACE_XENSERVER # Local variables: # mode: shell-script # End: