diff --git a/lib/nova b/lib/nova index 4c5520785f..8deb3a01a9 100644 --- a/lib/nova +++ b/lib/nova @@ -71,23 +71,24 @@ QEMU_CONF=/etc/libvirt/qemu.conf NOVNC_DIR=$DEST/noVNC SPICE_DIR=$DEST/spice-html5 +# Set default defaults here as some hypervisor drivers override these +PUBLIC_INTERFACE_DEFAULT=br100 +GUEST_INTERFACE_DEFAULT=eth0 +FLAT_NETWORK_BRIDGE_DEFAULT=br100 + +# Get hypervisor configuration +# ---------------------------- + +NOVA_PLUGINS=$TOP_DIR/lib/nova_plugins +if is_service_enabled nova && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then + # Load plugin + source $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER +fi + # Nova Network Configuration # -------------------------- -# Set defaults according to the virt driver -if [ "$VIRT_DRIVER" = 'baremetal' ]; then - NETWORK_MANAGER=${NETWORK_MANAGER:-FlatManager} - PUBLIC_INTERFACE_DEFAULT=eth0 - FLAT_INTERFACE=${FLAT_INTERFACE:-eth0} - FLAT_NETWORK_BRIDGE_DEFAULT=br100 - STUB_NETWORK=${STUB_NETWORK:-False} -else - PUBLIC_INTERFACE_DEFAULT=br100 - GUEST_INTERFACE_DEFAULT=eth0 - FLAT_NETWORK_BRIDGE_DEFAULT=br100 -fi - NETWORK_MANAGER=${NETWORK_MANAGER:-${NET_MAN:-FlatDHCPManager}} PUBLIC_INTERFACE=${PUBLIC_INTERFACE:-$PUBLIC_INTERFACE_DEFAULT} VLAN_INTERFACE=${VLAN_INTERFACE:-$GUEST_INTERFACE_DEFAULT} @@ -274,83 +275,6 @@ function configure_nova() { fi fi - # Prepare directories and packages for baremetal driver - if is_baremetal; then - configure_baremetal_nova_dirs - fi - - if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then - if is_service_enabled neutron && is_neutron_ovs_base_plugin && ! sudo grep -q '^cgroup_device_acl' $QEMU_CONF; then - # Add /dev/net/tun to cgroup_device_acls, needed for type=ethernet interfaces - cat </etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla -[libvirt Management Access] -Identity=unix-group:$LIBVIRT_GROUP -Action=org.libvirt.unix.manage -ResultAny=yes -ResultInactive=yes -ResultActive=yes -EOF" - elif is_suse && [[ $os_RELEASE = 12.2 || "$os_VENDOR" = "SUSE LINUX" ]]; then - # openSUSE < 12.3 or SLE - # Work around the fact that polkit-default-privs overrules pklas - # with 'unix-group:$group'. - sudo bash -c "cat </etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla -[libvirt Management Access] -Identity=unix-user:$USER -Action=org.libvirt.unix.manage -ResultAny=yes -ResultInactive=yes -ResultActive=yes -EOF" - else - # Starting with fedora 18 and opensuse-12.3 enable stack-user to - # virsh -c qemu:///system by creating a policy-kit rule for - # stack-user using the new Javascript syntax - rules_dir=/etc/polkit-1/rules.d - sudo mkdir -p $rules_dir - sudo bash -c "cat < $rules_dir/50-libvirt-$STACK_USER.rules -polkit.addRule(function(action, subject) { - if (action.id == 'org.libvirt.unix.manage' && - subject.user == '"$STACK_USER"') { - return polkit.Result.YES; - } -}); -EOF" - unset rules_dir - fi - fi - - # The user that nova runs as needs to be member of **libvirtd** group otherwise - # nova-compute will be unable to use libvirt. - if ! getent group $LIBVIRT_GROUP >/dev/null; then - sudo groupadd $LIBVIRT_GROUP - fi - add_user_to_group $STACK_USER $LIBVIRT_GROUP - - # libvirt detects various settings on startup, as we potentially changed - # the system configuration (modules, filesystems), we need to restart - # libvirt to detect those changes. - restart_service $LIBVIRT_DAEMON - fi - # Instance Storage # ---------------- @@ -368,6 +292,14 @@ EOF" fi fi fi + + # Rebuild the config file from scratch + create_nova_conf + + if [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then + # Configure hypervisor plugin + configure_nova_hypervisor + fi } # create_nova_accounts() - Set up common required nova accounts @@ -447,14 +379,6 @@ function create_nova_conf() { iniset $NOVA_CONF DEFAULT ec2_workers "4" iniset $NOVA_CONF DEFAULT metadata_workers "4" iniset $NOVA_CONF DEFAULT sql_connection `database_connection_url nova` - if is_baremetal; then - iniset $NOVA_CONF baremetal sql_connection `database_connection_url nova_bm` - fi - if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then - iniset $NOVA_CONF DEFAULT libvirt_type "$LIBVIRT_TYPE" - iniset $NOVA_CONF DEFAULT libvirt_cpu_mode "none" - iniset $NOVA_CONF DEFAULT use_usb_tablet "False" - fi iniset $NOVA_CONF DEFAULT instance_name_template "${INSTANCE_NAME_PREFIX}%08x" iniset $NOVA_CONF osapi_v3 enabled "True" @@ -646,37 +570,8 @@ function install_novaclient() { # install_nova() - Collect source and prepare function install_nova() { - if is_service_enabled n-cpu; then - if [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then - install_nova_hypervisor - elif [[ "$VIRT_DRIVER" = 'libvirt' ]]; then - if is_ubuntu; then - install_package kvm - install_package libvirt-bin - install_package python-libvirt - elif is_fedora || is_suse; then - install_package kvm - install_package libvirt - install_package libvirt-python - else - exit_distro_not_supported "libvirt installation" - fi - - # Install and configure **LXC** if specified. LXC is another approach to - # splitting a system into many smaller parts. LXC uses cgroups and chroot - # to simulate multiple systems. - if [[ "$LIBVIRT_TYPE" == "lxc" ]]; then - if is_ubuntu; then - if [[ "$DISTRO" > natty ]]; then - install_package cgroup-lite - fi - else - ### FIXME(dtroyer): figure this out - echo "RPM-based cgroup not implemented yet" - yum_install libcgroup-tools - fi - fi - fi + if is_service_enabled n-cpu && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then + install_nova_hypervisor fi git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH diff --git a/lib/nova_plugins/hypervisor-baremetal b/lib/nova_plugins/hypervisor-baremetal new file mode 100644 index 0000000000..4e7c1734d1 --- /dev/null +++ b/lib/nova_plugins/hypervisor-baremetal @@ -0,0 +1,93 @@ +# lib/nova_plugins/hypervisor-baremetal +# Configure the baremetal hypervisor + +# Enable with: +# VIRT_DRIVER=baremetal + +# 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 +MY_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +# Defaults +# -------- + +NETWORK_MANAGER=${NETWORK_MANAGER:-FlatManager} +PUBLIC_INTERFACE_DEFAULT=eth0 +FLAT_INTERFACE=${FLAT_INTERFACE:-eth0} +FLAT_NETWORK_BRIDGE_DEFAULT=br100 +STUB_NETWORK=${STUB_NETWORK:-False} + + +# 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() { + configure_baremetal_nova_dirs + + iniset $NOVA_CONF baremetal sql_connection `database_connection_url nova_bm` + LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.firewall.NoopFirewallDriver"} + iniset $NOVA_CONF DEFAULT compute_driver nova.virt.baremetal.driver.BareMetalDriver + iniset $NOVA_CONF DEFAULT firewall_driver $LIBVIRT_FIREWALL_DRIVER + iniset $NOVA_CONF DEFAULT scheduler_host_manager nova.scheduler.baremetal_host_manager.BaremetalHostManager + iniset $NOVA_CONF DEFAULT ram_allocation_ratio 1.0 + iniset $NOVA_CONF DEFAULT reserved_host_memory_mb 0 + iniset $NOVA_CONF baremetal instance_type_extra_specs cpu_arch:$BM_CPU_ARCH + iniset $NOVA_CONF baremetal driver $BM_DRIVER + iniset $NOVA_CONF baremetal power_manager $BM_POWER_MANAGER + iniset $NOVA_CONF baremetal tftp_root /tftpboot + if [[ "$BM_DNSMASQ_FROM_NOVA_NETWORK" = "True" ]]; then + BM_DNSMASQ_CONF=$NOVA_CONF_DIR/dnsmasq-for-baremetal-from-nova-network.conf + sudo cp "$FILES/dnsmasq-for-baremetal-from-nova-network.conf" "$BM_DNSMASQ_CONF" + iniset $NOVA_CONF DEFAULT dnsmasq_config_file "$BM_DNSMASQ_CONF" + fi + + # Define extra baremetal nova conf flags by defining the array ``EXTRA_BAREMETAL_OPTS``. + for I in "${EXTRA_BAREMETAL_OPTS[@]}"; do + # Attempt to convert flags to options + iniset $NOVA_CONF baremetal ${I/=/ } + done +} + +# install_nova_hypervisor() - Install external components +function install_nova_hypervisor() { + # 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 +$MY_XTRACE + +# Local variables: +# mode: shell-script +# End: diff --git a/lib/nova_plugins/hypervisor-libvirt b/lib/nova_plugins/hypervisor-libvirt new file mode 100644 index 0000000000..caf0296ad2 --- /dev/null +++ b/lib/nova_plugins/hypervisor-libvirt @@ -0,0 +1,165 @@ +# lib/nova_plugins/hypervisor-libvirt +# Configure the libvirt hypervisor + +# Enable with: +# VIRT_DRIVER=libvirt + +# 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 +MY_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +# Defaults +# -------- + + +# 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 is_service_enabled neutron && is_neutron_ovs_base_plugin && ! sudo grep -q '^cgroup_device_acl' $QEMU_CONF; then + # Add /dev/net/tun to cgroup_device_acls, needed for type=ethernet interfaces + cat </etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla +[libvirt Management Access] +Identity=unix-group:$LIBVIRT_GROUP +Action=org.libvirt.unix.manage +ResultAny=yes +ResultInactive=yes +ResultActive=yes +EOF" + elif is_suse && [[ $os_RELEASE = 12.2 || "$os_VENDOR" = "SUSE LINUX" ]]; then + # openSUSE < 12.3 or SLE + # Work around the fact that polkit-default-privs overrules pklas + # with 'unix-group:$group'. + sudo bash -c "cat </etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla +[libvirt Management Access] +Identity=unix-user:$USER +Action=org.libvirt.unix.manage +ResultAny=yes +ResultInactive=yes +ResultActive=yes +EOF" + else + # Starting with fedora 18 and opensuse-12.3 enable stack-user to + # virsh -c qemu:///system by creating a policy-kit rule for + # stack-user using the new Javascript syntax + rules_dir=/etc/polkit-1/rules.d + sudo mkdir -p $rules_dir + sudo bash -c "cat < $rules_dir/50-libvirt-$STACK_USER.rules +polkit.addRule(function(action, subject) { + if (action.id == 'org.libvirt.unix.manage' && + subject.user == '"$STACK_USER"') { + return polkit.Result.YES; + } +}); +EOF" + unset rules_dir + fi + fi + + # The user that nova runs as needs to be member of **libvirtd** group otherwise + # nova-compute will be unable to use libvirt. + if ! getent group $LIBVIRT_GROUP >/dev/null; then + sudo groupadd $LIBVIRT_GROUP + fi + add_user_to_group $STACK_USER $LIBVIRT_GROUP + + # libvirt detects various settings on startup, as we potentially changed + # the system configuration (modules, filesystems), we need to restart + # libvirt to detect those changes. + restart_service $LIBVIRT_DAEMON + + iniset $NOVA_CONF DEFAULT libvirt_type "$LIBVIRT_TYPE" + iniset $NOVA_CONF DEFAULT libvirt_cpu_mode "none" + iniset $NOVA_CONF DEFAULT use_usb_tablet "False" + iniset $NOVA_CONF DEFAULT compute_driver "libvirt.LibvirtDriver" + LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"} + iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" + # Power architecture currently does not support graphical consoles. + if is_arch "ppc64"; then + iniset $NOVA_CONF DEFAULT vnc_enabled "false" + fi +} + +# install_nova_hypervisor() - Install external components +function install_nova_hypervisor() { + if is_ubuntu; then + install_package kvm + install_package libvirt-bin + install_package python-libvirt + elif is_fedora || is_suse; then + install_package kvm + install_package libvirt + install_package libvirt-python + fi + + # Install and configure **LXC** if specified. LXC is another approach to + # splitting a system into many smaller parts. LXC uses cgroups and chroot + # to simulate multiple systems. + if [[ "$LIBVIRT_TYPE" == "lxc" ]]; then + if is_ubuntu; then + if [[ "$DISTRO" > natty ]]; then + install_package cgroup-lite + fi + else + ### FIXME(dtroyer): figure this out + echo "RPM-based cgroup not implemented yet" + yum_install libcgroup-tools + fi + fi +} + +# 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 +$MY_XTRACE + +# Local variables: +# mode: shell-script +# End: diff --git a/lib/nova_plugins/hypervisor-openvz b/lib/nova_plugins/hypervisor-openvz new file mode 100644 index 0000000000..fc5ed0cd11 --- /dev/null +++ b/lib/nova_plugins/hypervisor-openvz @@ -0,0 +1,67 @@ +# lib/nova_plugins/hypervisor-openvz +# Configure the openvz hypervisor + +# Enable with: +# VIRT_DRIVER=openvz + +# 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 +MY_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +# Defaults +# -------- + + +# 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() { + iniset $NOVA_CONF DEFAULT compute_driver "openvz.OpenVzDriver" + iniset $NOVA_CONF DEFAULT connection_type "openvz" + LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"} + iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" +} + +# install_nova_hypervisor() - Install external components +function install_nova_hypervisor() { + # 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 +$MY_XTRACE + +# Local variables: +# mode: shell-script +# End: diff --git a/lib/nova_plugins/hypervisor-powervm b/lib/nova_plugins/hypervisor-powervm new file mode 100644 index 0000000000..561dd9f00b --- /dev/null +++ b/lib/nova_plugins/hypervisor-powervm @@ -0,0 +1,76 @@ +# lib/nova_plugins/hypervisor-powervm +# Configure the PowerVM hypervisor + +# Enable with: +# VIRT_DRIVER=powervm + +# 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 +MY_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +# Defaults +# -------- + + +# 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() { + POWERVM_MGR_TYPE=${POWERVM_MGR_TYPE:-"ivm"} + POWERVM_MGR_HOST=${POWERVM_MGR_HOST:-"powervm.host"} + POWERVM_MGR_USER=${POWERVM_MGR_USER:-"padmin"} + POWERVM_MGR_PASSWD=${POWERVM_MGR_PASSWD:-"password"} + POWERVM_IMG_REMOTE_PATH=${POWERVM_IMG_REMOTE_PATH:-"/tmp"} + POWERVM_IMG_LOCAL_PATH=${POWERVM_IMG_LOCAL_PATH:-"/tmp"} + iniset $NOVA_CONF DEFAULT compute_driver nova.virt.powervm.PowerVMDriver + iniset $NOVA_CONF DEFAULT powervm_mgr_type $POWERVM_MGR_TYPE + iniset $NOVA_CONF DEFAULT powervm_mgr $POWERVM_MGR_HOST + iniset $NOVA_CONF DEFAULT powervm_mgr_user $POWERVM_MGR_USER + iniset $NOVA_CONF DEFAULT powervm_mgr_passwd $POWERVM_MGR_PASSWD + iniset $NOVA_CONF DEFAULT powervm_img_remote_path $POWERVM_IMG_REMOTE_PATH + iniset $NOVA_CONF DEFAULT powervm_img_local_path $POWERVM_IMG_LOCAL_PATH +} + +# install_nova_hypervisor() - Install external components +function install_nova_hypervisor() { + # 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 +$MY_XTRACE + +# Local variables: +# mode: shell-script +# End: diff --git a/stack.sh b/stack.sh index 3d27f1a954..14ec023a51 100755 --- a/stack.sh +++ b/stack.sh @@ -313,13 +313,6 @@ source $TOP_DIR/lib/ldap source $TOP_DIR/lib/ironic source $TOP_DIR/lib/trove -# Look for Nova hypervisor plugin -NOVA_PLUGINS=$TOP_DIR/lib/nova_plugins -if is_service_enabled nova && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then - # Load plugin - source $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER -fi - # Set the destination directories for other OpenStack projects OPENSTACKCLIENT_DIR=$DEST/python-openstackclient @@ -907,6 +900,7 @@ if is_service_enabled g-reg; then init_glance fi + # Ironic # ------ @@ -916,7 +910,6 @@ if is_service_enabled ir-api ir-cond; then fi - # Neutron # ------- @@ -942,11 +935,6 @@ fi # Nova # ---- -if is_service_enabled nova; then - echo_summary "Configuring Nova" - configure_nova -fi - if is_service_enabled n-net q-dhcp; then # Delete traces of nova networks from prior runs # Do not kill any dnsmasq instance spawned by NetworkManager @@ -989,8 +977,6 @@ fi if is_service_enabled nova; then echo_summary "Configuring Nova" - # Rebuild the config file from scratch - create_nova_conf init_nova # Additional Nova configuration that is dependent on other services @@ -1000,85 +986,6 @@ if is_service_enabled nova; then create_nova_conf_nova_network fi - - if [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then - # Configure hypervisor plugin - configure_nova_hypervisor - - - # OpenVZ - # ------ - - elif [ "$VIRT_DRIVER" = 'openvz' ]; then - echo_summary "Using OpenVZ virtualization driver" - iniset $NOVA_CONF DEFAULT compute_driver "openvz.OpenVzDriver" - iniset $NOVA_CONF DEFAULT connection_type "openvz" - LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"} - iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" - - - # Bare Metal - # ---------- - - elif [ "$VIRT_DRIVER" = 'baremetal' ]; then - echo_summary "Using BareMetal driver" - LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.firewall.NoopFirewallDriver"} - iniset $NOVA_CONF DEFAULT compute_driver nova.virt.baremetal.driver.BareMetalDriver - iniset $NOVA_CONF DEFAULT firewall_driver $LIBVIRT_FIREWALL_DRIVER - iniset $NOVA_CONF DEFAULT scheduler_host_manager nova.scheduler.baremetal_host_manager.BaremetalHostManager - iniset $NOVA_CONF DEFAULT ram_allocation_ratio 1.0 - iniset $NOVA_CONF DEFAULT reserved_host_memory_mb 0 - iniset $NOVA_CONF baremetal instance_type_extra_specs cpu_arch:$BM_CPU_ARCH - iniset $NOVA_CONF baremetal driver $BM_DRIVER - iniset $NOVA_CONF baremetal power_manager $BM_POWER_MANAGER - iniset $NOVA_CONF baremetal tftp_root /tftpboot - if [[ "$BM_DNSMASQ_FROM_NOVA_NETWORK" = "True" ]]; then - BM_DNSMASQ_CONF=$NOVA_CONF_DIR/dnsmasq-for-baremetal-from-nova-network.conf - sudo cp "$FILES/dnsmasq-for-baremetal-from-nova-network.conf" "$BM_DNSMASQ_CONF" - iniset $NOVA_CONF DEFAULT dnsmasq_config_file "$BM_DNSMASQ_CONF" - fi - - # Define extra baremetal nova conf flags by defining the array ``EXTRA_BAREMETAL_OPTS``. - for I in "${EXTRA_BAREMETAL_OPTS[@]}"; do - # Attempt to convert flags to options - iniset $NOVA_CONF baremetal ${I/=/ } - done - - - # PowerVM - # ------- - - elif [ "$VIRT_DRIVER" = 'powervm' ]; then - echo_summary "Using PowerVM driver" - POWERVM_MGR_TYPE=${POWERVM_MGR_TYPE:-"ivm"} - POWERVM_MGR_HOST=${POWERVM_MGR_HOST:-"powervm.host"} - POWERVM_MGR_USER=${POWERVM_MGR_USER:-"padmin"} - POWERVM_MGR_PASSWD=${POWERVM_MGR_PASSWD:-"password"} - POWERVM_IMG_REMOTE_PATH=${POWERVM_IMG_REMOTE_PATH:-"/tmp"} - POWERVM_IMG_LOCAL_PATH=${POWERVM_IMG_LOCAL_PATH:-"/tmp"} - iniset $NOVA_CONF DEFAULT compute_driver nova.virt.powervm.PowerVMDriver - iniset $NOVA_CONF DEFAULT powervm_mgr_type $POWERVM_MGR_TYPE - iniset $NOVA_CONF DEFAULT powervm_mgr $POWERVM_MGR_HOST - iniset $NOVA_CONF DEFAULT powervm_mgr_user $POWERVM_MGR_USER - iniset $NOVA_CONF DEFAULT powervm_mgr_passwd $POWERVM_MGR_PASSWD - iniset $NOVA_CONF DEFAULT powervm_img_remote_path $POWERVM_IMG_REMOTE_PATH - iniset $NOVA_CONF DEFAULT powervm_img_local_path $POWERVM_IMG_LOCAL_PATH - - - # Default libvirt - # --------------- - - else - echo_summary "Using libvirt virtualization driver" - iniset $NOVA_CONF DEFAULT compute_driver "libvirt.LibvirtDriver" - LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"} - iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" - # Power architecture currently does not support graphical consoles. - if is_arch "ppc64"; then - iniset $NOVA_CONF DEFAULT vnc_enabled "false" - fi - fi - init_nova_cells fi