devstack/lib/neutron_plugins/vmware_nsx
armando-migliaccio 05952e3fcc Configuration changes required to support VMware NSX plugin
(Formerly known as Nicira NVP plugin).

Following Neutron change 79fbeb7ebebc0dfbe143aee96fbc250d1b9e7582,
this patch introduces the new naming scheme for Neutron VMware NSX
plugin configuration.

Related-blueprint: nvp-third-part-support (aka bp vmware-nsx-third-party)
Partial-implements blueprint: nicira-plugin-renaming

Change-Id: If7790887661507bfdec6d2b97c0f99609039aa73
2014-01-05 08:01:16 -08:00

151 lines
5.3 KiB
Plaintext

# Neutron VMware NSX plugin
# -------------------------
# Save trace setting
MY_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
# Set manager to NSX controller (1st of list)
if [[ "$NSX_CONTROLLERS" != "" ]]; then
# Get the first controller
controllers=(${NSX_CONTROLLERS//,/ })
OVS_MGR_IP=${controllers[0]}
else
die $LINENO "Error - No controller specified. Unable to set a manager for OVS"
fi
sudo ovs-vsctl set-manager ssl:$OVS_MGR_IP
}
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
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_DB_NAME="neutron_nsx"
# TODO(armando-migliaccio): rename this once the code rename is complete
Q_PLUGIN_CLASS="neutron.plugins.nicira.NeutronPlugin.NvpPluginV2"
}
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
}
function neutron_plugin_configure_l3_agent() {
# VMware NSX plugin does not run L3 agent
die $LINENO "q-l3 should must 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 neutron_plugin_configure_service() {
if [[ "$MAX_LP_PER_BRIDGED_LS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx max_lp_per_bridged_ls $MAX_LP_PER_BRIDGED_LS
fi
if [[ "$MAX_LP_PER_OVERLAY_LS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx max_lp_per_overlay_ls $MAX_LP_PER_OVERLAY_LS
fi
if [[ "$FAILOVER_TIME" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx failover_time $FAILOVER_TIME
fi
if [[ "$CONCURRENT_CONNECTIONS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx concurrent_connections $CONCURRENT_CONNECTIONS
fi
if [[ "$DEFAULT_TZ_UUID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT default_tz_uuid $DEFAULT_TZ_UUID
else
die $LINENO "The VMware NSX plugin won't work without a default transport zone."
fi
if [[ "$DEFAULT_L3_GW_SVC_UUID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT default_l3_gw_service_uuid $DEFAULT_L3_GW_SVC_UUID
Q_L3_ENABLED=True
Q_L3_ROUTER_PER_TENANT=True
iniset /$Q_PLUGIN_CONF_FILE nsx metadata_mode access_network
fi
if [[ "$DEFAULT_L2_GW_SVC_UUID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT default_l2_gw_service_uuid $DEFAULT_L2_GW_SVC_UUID
fi
# NSX_CONTROLLERS must be a comma separated string
if [[ "$NSX_CONTROLLERS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT nsx_controllers $NSX_CONTROLLERS
else
die $LINENO "The VMware NSX plugin needs at least an NSX controller."
fi
if [[ "$NSX_USER" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT nsx_user $NSX_USER
fi
if [[ "$NSX_PASSWORD" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT nsx_password $NSX_PASSWORD
fi
if [[ "$NSX_REQ_TIMEOUT" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT req_timeout $NSX_REQ_TIMEOUT
fi
if [[ "$NSX_HTTP_TIMEOUT" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT http_timeout $NSX_HTTP_TIMEOUT
fi
if [[ "$NSX_RETRIES" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT retries $NSX_RETRIES
fi
if [[ "$NSX_REDIRECTS" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT redirects $NSX_REDIRECTS
fi
if [[ "$AGENT_MODE" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE nsx agent_mode $AGENT_MODE
if [[ "$AGENT_MODE" == "agentless" ]]; then
if [[ "$DEFAULT_SERVICE_CLUSTER_UUID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE DEFAULT default_service_cluster_uuid $DEFAULT_SERVICE_CLUSTER_UUID
else
die $LINENO "Agentless mode requires a service cluster."
fi
iniset /$Q_PLUGIN_CONF_FILE nsx_metadata metadata_server_address $Q_META_DATA_IP
fi
fi
}
function neutron_plugin_setup_interface_driver() {
local conf_file=$1
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
}
function has_neutron_plugin_security_group() {
# 0 means True here
return 0
}
function neutron_plugin_check_adv_test_requirements() {
is_service_enabled q-dhcp && return 0
}
# Restore xtrace
$MY_XTRACE