| #!/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 |
| # -------- |
| |
| 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: |