vmware-nsx/devstack/lib/vmware_nsx_v3
Akihiro Motoki 3631fc0ca5 Define has_neutron_plugin_security_group using override-defaults
DevStack now privides a mechanism to define methods before loading
lib/*. Previously has_neutron_plugin_security_group is used before
an external DevStack plugin is loaded, so we need to define this
method in the master DevStack repo. Now we can define this method
by using the override-defaults mechanism. This allows us to remove
a plugin-specific definition from the master DevStack repo.

Needed-By: Ib0f6e3d9463357d2dd66a2d61b8c722fa1f0bfba
Change-Id: I8b19b8f1b0694a96132f158146848aee7d14e8ff
2016-01-13 23:26:21 +09:00

132 lines
4.4 KiB
Bash

#!/bin/bash
# Copyright 2015 VMware, Inc.
#
# All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# Neutron VMware NSX plugin
# -------------------------
# Save trace setting
NSX_XTRACE=$(set +o | grep xtrace)
set +o xtrace
source $TOP_DIR/lib/neutron_plugins/ovs_base
function setup_integration_bridge {
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
sudo ovs-vsctl set-manager tcp:127.0.0.1:6632
sudo ovs-vsctl set bridge $OVS_BRIDGE external_ids:bridge-id=nsx-managed
}
function is_neutron_ovs_base_plugin {
# NSX uses OVS, but not the l3-agent
return 0
}
function neutron_plugin_create_nova_conf {
# if n-cpu is enabled, then setup integration bridge
if is_service_enabled n-cpu; then
setup_integration_bridge
iniset $NOVA_CONF neutron ovs_bridge $OVS_BRIDGE
fi
}
function neutron_plugin_install_agent_packages {
# VMware NSX Plugin does not run q-agt, but it currently needs dhcp and metadata agents
_neutron_ovs_base_install_agent_packages
}
function neutron_plugin_configure_common {
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/vmware
Q_PLUGIN_CONF_FILENAME=nsx.ini
Q_PLUGIN_SRC_CONF_PATH=vmware-nsx/etc
mkdir -p /$Q_PLUGIN_CONF_PATH
cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME
Q_PLUGIN_CLASS="vmware_nsx.plugin.NsxV3Plugin"
}
function neutron_plugin_configure_debug_command {
sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge "$PUBLIC_BRIDGE"
}
function neutron_plugin_configure_dhcp_agent {
setup_integration_bridge
iniset $Q_DHCP_CONF_FILE DEFAULT enable_isolated_metadata True
iniset $Q_DHCP_CONF_FILE DEFAULT enable_metadata_network True
iniset $Q_DHCP_CONF_FILE DEFAULT ovs_use_veth True
iniset $Q_DHCP_CONF_FILE DEFAULT ovs_integration_bridge $OVS_BRIDGE
}
function neutron_plugin_configure_l3_agent {
# VMware NSX plugin does not run L3 agent
die $LINENO "q-l3 should not be executed with VMware NSX plugin!"
}
function neutron_plugin_configure_plugin_agent {
# VMware NSX plugin does not run L2 agent
die $LINENO "q-agt must not be executed with VMware NSX plugin!"
}
function _nsxv3_ini_set {
if [[ $2 != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx_v3 $1 $2
elif [[ $3 != "" ]]; then
die $LINENO $3
fi
}
function neutron_plugin_configure_service {
_nsxv3_ini_set default_overlay_tz_uuid $DEFAULT_OVERLAY_TZ_UUID "The VMware NSX plugin won't work without a default transport zone."
_nsxv3_ini_set default_vlan_tz_uuid $DEFAULT_VLAN_TZ_UUID
if [[ "$DEFAULT_EDGE_CLUSTER_UUID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx_v3 default_edge_cluster_uuid $DEFAULT_EDGE_CLUSTER_UUID
Q_L3_ENABLED=True
Q_L3_ROUTER_PER_TENANT=True
fi
# NSX_MANAGER must be a comma separated string
if [[ "$NSX_MANAGERS" != "" ]]; then
_nsxv3_ini_set nsx_api_managers $NSX_MANAGERS
elif [[ "$NSX_MANAGER" != "" ]]; then
_nsxv3_ini_set nsx_api_managers $NSX_MANAGER
else
die $LINENO "The VMware NSX plugin needs at least one NSX manager."
fi
if [[ "$NSX_L2GW_DRIVER" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT nsx_l2gw_driver $NSX_L2GW_DRIVER
fi
_nsxv3_ini_set default_tier0_router_uuid $DEFAULT_TIER0_ROUTER_UUID
_nsxv3_ini_set nsx_api_user $NSX_USER
_nsxv3_ini_set nsx_api_password $NSX_PASSWORD
_nsxv3_ini_set retries $NSX_RETRIES
_nsxv3_ini_set insecure $NSX_INSECURE
_nsxv3_ini_set ca_file $NSX_CA_FILE
_nsxv3_ini_set default_bridge_cluster_uuid $DEFAULT_BRIDGE_CLUSTER_UUID
}
function neutron_plugin_setup_interface_driver {
local conf_file=$1
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
}
function neutron_plugin_check_adv_test_requirements {
is_service_enabled q-dhcp && return 0
}
# Restore xtrace
$NSX_XTRACE