Merge "update for name change to Neutron"
This commit is contained in:
commit
2076647e21
@ -110,7 +110,7 @@ follows:
|
|||||||
* Global service configuration like ``ENABLED_SERVICES``
|
* Global service configuration like ``ENABLED_SERVICES``
|
||||||
* Variables used by multiple services that do not have a clear owner, i.e.
|
* Variables used by multiple services that do not have a clear owner, i.e.
|
||||||
``VOLUME_BACKING_FILE_SIZE`` (nova-volumes and cinder) or ``PUBLIC_NETWORK_NAME``
|
``VOLUME_BACKING_FILE_SIZE`` (nova-volumes and cinder) or ``PUBLIC_NETWORK_NAME``
|
||||||
(nova-network and quantum)
|
(nova-network and neutron)
|
||||||
* Variables that can not be cleanly declared in a project file due to
|
* Variables that can not be cleanly declared in a project file due to
|
||||||
dependency ordering, i.e. the order of sourcing the project files can
|
dependency ordering, i.e. the order of sourcing the project files can
|
||||||
not be changed for other reasons but the earlier file needs to dereference a
|
not be changed for other reasons but the earlier file needs to dereference a
|
||||||
|
14
README.md
14
README.md
@ -104,11 +104,11 @@ If you are enabling `swift3` in `ENABLED_SERVICES` devstack will install the swi
|
|||||||
|
|
||||||
Only Swift proxy server is launched in the screen session all other services are started in background and managed by `swift-init` tool.
|
Only Swift proxy server is launched in the screen session all other services are started in background and managed by `swift-init` tool.
|
||||||
|
|
||||||
# Quantum
|
# Neutron
|
||||||
|
|
||||||
Basic Setup
|
Basic Setup
|
||||||
|
|
||||||
In order to enable Quantum a single node setup, you'll need the following settings in your `localrc` :
|
In order to enable Neutron a single node setup, you'll need the following settings in your `localrc` :
|
||||||
|
|
||||||
disable_service n-net
|
disable_service n-net
|
||||||
enable_service q-svc
|
enable_service q-svc
|
||||||
@ -116,13 +116,13 @@ In order to enable Quantum a single node setup, you'll need the following settin
|
|||||||
enable_service q-dhcp
|
enable_service q-dhcp
|
||||||
enable_service q-l3
|
enable_service q-l3
|
||||||
enable_service q-meta
|
enable_service q-meta
|
||||||
enable_service quantum
|
enable_service neutron
|
||||||
# Optional, to enable tempest configuration as part of devstack
|
# Optional, to enable tempest configuration as part of devstack
|
||||||
enable_service tempest
|
enable_service tempest
|
||||||
|
|
||||||
Then run `stack.sh` as normal.
|
Then run `stack.sh` as normal.
|
||||||
|
|
||||||
devstack supports adding specific Quantum configuration flags to both the Open vSwitch and LinuxBridge plugin configuration files. To make use of this feature, the following variables are defined and can be configured in your `localrc` file:
|
devstack supports adding specific Neutron configuration flags to both the Open vSwitch and LinuxBridge plugin configuration files. To make use of this feature, the following variables are defined and can be configured in your `localrc` file:
|
||||||
|
|
||||||
Variable Name Plugin Config File Section Modified
|
Variable Name Plugin Config File Section Modified
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
@ -144,7 +144,7 @@ If tempest has been successfully configured, a basic set of smoke tests can be r
|
|||||||
|
|
||||||
# Multi-Node Setup
|
# Multi-Node Setup
|
||||||
|
|
||||||
A more interesting setup involves running multiple compute nodes, with Quantum networks connecting VMs on different compute nodes.
|
A more interesting setup involves running multiple compute nodes, with Neutron networks connecting VMs on different compute nodes.
|
||||||
You should run at least one "controller node", which should have a `stackrc` that includes at least:
|
You should run at least one "controller node", which should have a `stackrc` that includes at least:
|
||||||
|
|
||||||
disable_service n-net
|
disable_service n-net
|
||||||
@ -153,7 +153,7 @@ You should run at least one "controller node", which should have a `stackrc` tha
|
|||||||
enable_service q-dhcp
|
enable_service q-dhcp
|
||||||
enable_service q-l3
|
enable_service q-l3
|
||||||
enable_service q-meta
|
enable_service q-meta
|
||||||
enable_service quantum
|
enable_service neutron
|
||||||
|
|
||||||
You likely want to change your `localrc` to run a scheduler that will balance VMs across hosts:
|
You likely want to change your `localrc` to run a scheduler that will balance VMs across hosts:
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ You likely want to change your `localrc` to run a scheduler that will balance VM
|
|||||||
|
|
||||||
You can then run many compute nodes, each of which should have a `stackrc` which includes the following, with the IP address of the above controller node:
|
You can then run many compute nodes, each of which should have a `stackrc` which includes the following, with the IP address of the above controller node:
|
||||||
|
|
||||||
ENABLED_SERVICES=n-cpu,rabbit,g-api,quantum,q-agt
|
ENABLED_SERVICES=n-cpu,rabbit,g-api,neutron,q-agt
|
||||||
SERVICE_HOST=[IP of controller node]
|
SERVICE_HOST=[IP of controller node]
|
||||||
MYSQL_HOST=$SERVICE_HOST
|
MYSQL_HOST=$SERVICE_HOST
|
||||||
RABBIT_HOST=$SERVICE_HOST
|
RABBIT_HOST=$SERVICE_HOST
|
||||||
|
4
clean.sh
4
clean.sh
@ -42,7 +42,7 @@ source $TOP_DIR/lib/cinder
|
|||||||
source $TOP_DIR/lib/swift
|
source $TOP_DIR/lib/swift
|
||||||
source $TOP_DIR/lib/ceilometer
|
source $TOP_DIR/lib/ceilometer
|
||||||
source $TOP_DIR/lib/heat
|
source $TOP_DIR/lib/heat
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
source $TOP_DIR/lib/baremetal
|
source $TOP_DIR/lib/baremetal
|
||||||
source $TOP_DIR/lib/ldap
|
source $TOP_DIR/lib/ldap
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ cleanup_cinder
|
|||||||
cleanup_glance
|
cleanup_glance
|
||||||
cleanup_keystone
|
cleanup_keystone
|
||||||
cleanup_nova
|
cleanup_nova
|
||||||
cleanup_quantum
|
cleanup_neutron
|
||||||
cleanup_swift
|
cleanup_swift
|
||||||
|
|
||||||
# cinder doesn't always clean up the volume group as it might be used elsewhere...
|
# cinder doesn't always clean up the volume group as it might be used elsewhere...
|
||||||
|
@ -32,9 +32,9 @@ source $TOP_DIR/functions
|
|||||||
# Import configuration
|
# Import configuration
|
||||||
source $TOP_DIR/openrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Import quantum functions if needed
|
# Import neutron functions if needed
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import exercise configuration
|
# Import exercise configuration
|
||||||
|
@ -33,9 +33,9 @@ source $TOP_DIR/functions
|
|||||||
# Import EC2 configuration
|
# Import EC2 configuration
|
||||||
source $TOP_DIR/eucarc
|
source $TOP_DIR/eucarc
|
||||||
|
|
||||||
# Import quantum functions if needed
|
# Import neutron functions if needed
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import exercise configuration
|
# Import exercise configuration
|
||||||
|
@ -30,9 +30,9 @@ source $TOP_DIR/functions
|
|||||||
# Import configuration
|
# Import configuration
|
||||||
source $TOP_DIR/openrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Import quantum functions if needed
|
# Import neutron functions if needed
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import exercise configuration
|
# Import exercise configuration
|
||||||
@ -155,7 +155,7 @@ nova add-floating-ip $VM_UUID $FLOATING_IP || \
|
|||||||
# Test we can ping our floating IP within ASSOCIATE_TIMEOUT seconds
|
# Test we can ping our floating IP within ASSOCIATE_TIMEOUT seconds
|
||||||
ping_check "$PUBLIC_NETWORK_NAME" $FLOATING_IP $ASSOCIATE_TIMEOUT
|
ping_check "$PUBLIC_NETWORK_NAME" $FLOATING_IP $ASSOCIATE_TIMEOUT
|
||||||
|
|
||||||
if ! is_service_enabled quantum; then
|
if ! is_service_enabled neutron; then
|
||||||
# Allocate an IP from second floating pool
|
# Allocate an IP from second floating pool
|
||||||
TEST_FLOATING_IP=$(nova floating-ip-create $TEST_FLOATING_POOL | grep $TEST_FLOATING_POOL | get_field 1)
|
TEST_FLOATING_IP=$(nova floating-ip-create $TEST_FLOATING_POOL | grep $TEST_FLOATING_POOL | get_field 1)
|
||||||
die_if_not_set $LINENO TEST_FLOATING_IP "Failure creating floating IP in $TEST_FLOATING_POOL"
|
die_if_not_set $LINENO TEST_FLOATING_IP "Failure creating floating IP in $TEST_FLOATING_POOL"
|
||||||
@ -179,7 +179,7 @@ fi
|
|||||||
# Clean up
|
# Clean up
|
||||||
# --------
|
# --------
|
||||||
|
|
||||||
if ! is_service_enabled quantum; then
|
if ! is_service_enabled neutron; then
|
||||||
# Delete second floating IP
|
# Delete second floating IP
|
||||||
nova floating-ip-delete $TEST_FLOATING_IP || \
|
nova floating-ip-delete $TEST_FLOATING_IP || \
|
||||||
die $LINENO "Failure deleting floating IP $TEST_FLOATING_IP"
|
die $LINENO "Failure deleting floating IP $TEST_FLOATING_IP"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
|
|
||||||
# **quantum-adv-test.sh**
|
# **neutron-adv-test.sh**
|
||||||
|
|
||||||
# Perform integration testing of Nova and other components with Quantum.
|
# Perform integration testing of Nova and other components with Neutron.
|
||||||
|
|
||||||
echo "*********************************************************************"
|
echo "*********************************************************************"
|
||||||
echo "Begin DevStack Exercise: $0"
|
echo "Begin DevStack Exercise: $0"
|
||||||
@ -43,16 +43,16 @@ source $TOP_DIR/functions
|
|||||||
# Import configuration
|
# Import configuration
|
||||||
source $TOP_DIR/openrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Import quantum functions
|
# Import neutron functions
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
|
|
||||||
# If quantum is not enabled we exit with exitcode 55, which means exercise is skipped.
|
# If neutron is not enabled we exit with exitcode 55, which means exercise is skipped.
|
||||||
quantum_plugin_check_adv_test_requirements || exit 55
|
neutron_plugin_check_adv_test_requirements || exit 55
|
||||||
|
|
||||||
# Import exercise configuration
|
# Import exercise configuration
|
||||||
source $TOP_DIR/exerciserc
|
source $TOP_DIR/exerciserc
|
||||||
|
|
||||||
# Quantum Settings
|
# Neutron Settings
|
||||||
# ----------------
|
# ----------------
|
||||||
|
|
||||||
TENANTS="DEMO1"
|
TENANTS="DEMO1"
|
||||||
@ -161,7 +161,7 @@ function get_role_id {
|
|||||||
|
|
||||||
function get_network_id {
|
function get_network_id {
|
||||||
local NETWORK_NAME="$1"
|
local NETWORK_NAME="$1"
|
||||||
local NETWORK_ID=`quantum net-list -F id -- --name=$NETWORK_NAME | awk "NR==4" | awk '{print $2}'`
|
local NETWORK_ID=`neutron net-list -F id -- --name=$NETWORK_NAME | awk "NR==4" | awk '{print $2}'`
|
||||||
echo $NETWORK_ID
|
echo $NETWORK_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,9 +232,9 @@ function create_network {
|
|||||||
source $TOP_DIR/openrc admin admin
|
source $TOP_DIR/openrc admin admin
|
||||||
local TENANT_ID=$(get_tenant_id $TENANT)
|
local TENANT_ID=$(get_tenant_id $TENANT)
|
||||||
source $TOP_DIR/openrc $TENANT $TENANT
|
source $TOP_DIR/openrc $TENANT $TENANT
|
||||||
local NET_ID=$(quantum net-create --tenant_id $TENANT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
|
local NET_ID=$(neutron net-create --tenant_id $TENANT_ID $NET_NAME $EXTRA| grep ' id ' | awk '{print $4}' )
|
||||||
quantum subnet-create --ip_version 4 --tenant_id $TENANT_ID --gateway $GATEWAY $NET_ID $CIDR
|
neutron subnet-create --ip_version 4 --tenant_id $TENANT_ID --gateway $GATEWAY $NET_ID $CIDR
|
||||||
quantum-debug probe-create --device-owner compute $NET_ID
|
neutron-debug probe-create --device-owner compute $NET_ID
|
||||||
source $TOP_DIR/openrc demo demo
|
source $TOP_DIR/openrc demo demo
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,10 +320,10 @@ function delete_network {
|
|||||||
local TENANT_ID=$(get_tenant_id $TENANT)
|
local TENANT_ID=$(get_tenant_id $TENANT)
|
||||||
#TODO(nati) comment out until l3-agent merged
|
#TODO(nati) comment out until l3-agent merged
|
||||||
#for res in port subnet net router;do
|
#for res in port subnet net router;do
|
||||||
for net_id in `quantum net-list -c id -c name | grep $NET_NAME | awk '{print $2}'`;do
|
for net_id in `neutron net-list -c id -c name | grep $NET_NAME | awk '{print $2}'`;do
|
||||||
delete_probe $net_id
|
delete_probe $net_id
|
||||||
quantum subnet-list | grep $net_id | awk '{print $2}' | xargs -I% quantum subnet-delete %
|
neutron subnet-list | grep $net_id | awk '{print $2}' | xargs -I% neutron subnet-delete %
|
||||||
quantum net-delete $net_id
|
neutron net-delete $net_id
|
||||||
done
|
done
|
||||||
source $TOP_DIR/openrc demo demo
|
source $TOP_DIR/openrc demo demo
|
||||||
}
|
}
|
||||||
|
@ -30,9 +30,9 @@ source $TOP_DIR/functions
|
|||||||
# Import configuration
|
# Import configuration
|
||||||
source $TOP_DIR/openrc
|
source $TOP_DIR/openrc
|
||||||
|
|
||||||
# Import quantum functions if needed
|
# Import neutron functions if needed
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import exercise configuration
|
# Import exercise configuration
|
||||||
|
20
functions
20
functions
@ -262,8 +262,8 @@ function get_packages() {
|
|||||||
file_to_parse="${file_to_parse} keystone"
|
file_to_parse="${file_to_parse} keystone"
|
||||||
fi
|
fi
|
||||||
elif [[ $service == q-* ]]; then
|
elif [[ $service == q-* ]]; then
|
||||||
if [[ ! $file_to_parse =~ quantum ]]; then
|
if [[ ! $file_to_parse =~ neutron ]]; then
|
||||||
file_to_parse="${file_to_parse} quantum"
|
file_to_parse="${file_to_parse} neutron"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -717,7 +717,7 @@ function is_running() {
|
|||||||
# **cinder** returns true if any service enabled start with **c-**
|
# **cinder** returns true if any service enabled start with **c-**
|
||||||
# **ceilometer** returns true if any service enabled start with **ceilometer**
|
# **ceilometer** returns true if any service enabled start with **ceilometer**
|
||||||
# **glance** returns true if any service enabled start with **g-**
|
# **glance** returns true if any service enabled start with **g-**
|
||||||
# **quantum** returns true if any service enabled start with **q-**
|
# **neutron** returns true if any service enabled start with **q-**
|
||||||
# **swift** returns true if any service enabled start with **s-**
|
# **swift** returns true if any service enabled start with **s-**
|
||||||
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
|
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
|
||||||
# **s-** services will be enabled. This will be deprecated in the future.
|
# **s-** services will be enabled. This will be deprecated in the future.
|
||||||
@ -732,7 +732,7 @@ function is_service_enabled() {
|
|||||||
[[ ${service} == "cinder" && ${ENABLED_SERVICES} =~ "c-" ]] && return 0
|
[[ ${service} == "cinder" && ${ENABLED_SERVICES} =~ "c-" ]] && return 0
|
||||||
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
|
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
|
||||||
[[ ${service} == "glance" && ${ENABLED_SERVICES} =~ "g-" ]] && return 0
|
[[ ${service} == "glance" && ${ENABLED_SERVICES} =~ "g-" ]] && return 0
|
||||||
[[ ${service} == "quantum" && ${ENABLED_SERVICES} =~ "q-" ]] && return 0
|
[[ ${service} == "neutron" && ${ENABLED_SERVICES} =~ "q-" ]] && return 0
|
||||||
[[ ${service} == "swift" && ${ENABLED_SERVICES} =~ "s-" ]] && return 0
|
[[ ${service} == "swift" && ${ENABLED_SERVICES} =~ "s-" ]] && return 0
|
||||||
[[ ${service} == s-* && ${ENABLED_SERVICES} =~ "swift" ]] && return 0
|
[[ ${service} == s-* && ${ENABLED_SERVICES} =~ "swift" ]] && return 0
|
||||||
done
|
done
|
||||||
@ -758,7 +758,7 @@ function _cleanup_service_list () {
|
|||||||
# enable_service qpid
|
# enable_service qpid
|
||||||
#
|
#
|
||||||
# This function does not know about the special cases
|
# This function does not know about the special cases
|
||||||
# for nova, glance, and quantum built into is_service_enabled().
|
# for nova, glance, and neutron built into is_service_enabled().
|
||||||
# Uses global ``ENABLED_SERVICES``
|
# Uses global ``ENABLED_SERVICES``
|
||||||
# enable_service service [service ...]
|
# enable_service service [service ...]
|
||||||
function enable_service() {
|
function enable_service() {
|
||||||
@ -780,7 +780,7 @@ function enable_service() {
|
|||||||
# disable_service rabbit
|
# disable_service rabbit
|
||||||
#
|
#
|
||||||
# This function does not know about the special cases
|
# This function does not know about the special cases
|
||||||
# for nova, glance, and quantum built into is_service_enabled().
|
# for nova, glance, and neutron built into is_service_enabled().
|
||||||
# Uses global ``ENABLED_SERVICES``
|
# Uses global ``ENABLED_SERVICES``
|
||||||
# disable_service service [service ...]
|
# disable_service service [service ...]
|
||||||
function disable_service() {
|
function disable_service() {
|
||||||
@ -1331,8 +1331,8 @@ function zypper_install() {
|
|||||||
# Uses globals ``ENABLED_SERVICES``
|
# Uses globals ``ENABLED_SERVICES``
|
||||||
# ping_check from-net ip boot-timeout expected
|
# ping_check from-net ip boot-timeout expected
|
||||||
function ping_check() {
|
function ping_check() {
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
_ping_check_quantum "$1" $2 $3 $4
|
_ping_check_neutron "$1" $2 $3 $4
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
_ping_check_novanet "$1" $2 $3 $4
|
_ping_check_novanet "$1" $2 $3 $4
|
||||||
@ -1371,8 +1371,8 @@ function _ping_check_novanet() {
|
|||||||
|
|
||||||
# ssh_check net-name key-file floating-ip default-user active-timeout
|
# ssh_check net-name key-file floating-ip default-user active-timeout
|
||||||
function ssh_check() {
|
function ssh_check() {
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
_ssh_check_quantum "$1" $2 $3 $4 $5
|
_ssh_check_neutron "$1" $2 $3 $4 $5
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
_ssh_check_novanet "$1" $2 $3 $4 $5
|
_ssh_check_novanet "$1" $2 $3 $4 $5
|
||||||
|
@ -151,12 +151,12 @@ function configure_keystone() {
|
|||||||
echo "catalog.RegionOne.object_store.name = Swift Service" >> $KEYSTONE_CATALOG
|
echo "catalog.RegionOne.object_store.name = Swift Service" >> $KEYSTONE_CATALOG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add quantum endpoints to service catalog if quantum is enabled
|
# Add neutron endpoints to service catalog if neutron is enabled
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
echo "catalog.RegionOne.network.publicURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
echo "catalog.RegionOne.network.publicURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
||||||
echo "catalog.RegionOne.network.adminURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
echo "catalog.RegionOne.network.adminURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
||||||
echo "catalog.RegionOne.network.internalURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
echo "catalog.RegionOne.network.internalURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG
|
||||||
echo "catalog.RegionOne.network.name = Quantum Service" >> $KEYSTONE_CATALOG
|
echo "catalog.RegionOne.network.name = Neutron Service" >> $KEYSTONE_CATALOG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -e "
|
sed -e "
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# lib/quantum
|
# lib/neutron
|
||||||
# functions - funstions specific to quantum
|
# functions - funstions specific to neutron
|
||||||
|
|
||||||
# Dependencies:
|
# Dependencies:
|
||||||
# ``functions`` file
|
# ``functions`` file
|
||||||
@ -7,62 +7,62 @@
|
|||||||
|
|
||||||
# ``stack.sh`` calls the entry points in this order:
|
# ``stack.sh`` calls the entry points in this order:
|
||||||
#
|
#
|
||||||
# install_quantum
|
# install_neutron
|
||||||
# install_quantumclient
|
# install_neutronclient
|
||||||
# install_quantum_agent_packages
|
# install_neutron_agent_packages
|
||||||
# install_quantum_third_party
|
# install_neutron_third_party
|
||||||
# configure_quantum
|
# configure_neutron
|
||||||
# init_quantum
|
# init_neutron
|
||||||
# configure_quantum_third_party
|
# configure_neutron_third_party
|
||||||
# init_quantum_third_party
|
# init_neutron_third_party
|
||||||
# start_quantum_third_party
|
# start_neutron_third_party
|
||||||
# create_nova_conf_quantum
|
# create_nova_conf_neutron
|
||||||
# start_quantum_service_and_check
|
# start_neutron_service_and_check
|
||||||
# create_quantum_initial_network
|
# create_neutron_initial_network
|
||||||
# setup_quantum_debug
|
# setup_neutron_debug
|
||||||
# start_quantum_agents
|
# start_neutron_agents
|
||||||
#
|
#
|
||||||
# ``unstack.sh`` calls the entry points in this order:
|
# ``unstack.sh`` calls the entry points in this order:
|
||||||
#
|
#
|
||||||
# stop_quantum
|
# stop_neutron
|
||||||
|
|
||||||
# Functions in lib/quantum are classified into the following categories:
|
# Functions in lib/neutron are classified into the following categories:
|
||||||
#
|
#
|
||||||
# - entry points (called from stack.sh or unstack.sh)
|
# - entry points (called from stack.sh or unstack.sh)
|
||||||
# - internal functions
|
# - internal functions
|
||||||
# - quantum exercises
|
# - neutron exercises
|
||||||
# - 3rd party programs
|
# - 3rd party programs
|
||||||
|
|
||||||
|
|
||||||
# Quantum Networking
|
# Neutron Networking
|
||||||
# ------------------
|
# ------------------
|
||||||
|
|
||||||
# Make sure that quantum is enabled in ``ENABLED_SERVICES``. If you want
|
# Make sure that neutron is enabled in ``ENABLED_SERVICES``. If you want
|
||||||
# to run Quantum on this host, make sure that q-svc is also in
|
# to run Neutron on this host, make sure that q-svc is also in
|
||||||
# ``ENABLED_SERVICES``.
|
# ``ENABLED_SERVICES``.
|
||||||
#
|
#
|
||||||
# If you're planning to use the Quantum openvswitch plugin, set
|
# If you're planning to use the Neutron openvswitch plugin, set
|
||||||
# ``Q_PLUGIN`` to "openvswitch" and make sure the q-agt service is enabled
|
# ``Q_PLUGIN`` to "openvswitch" and make sure the q-agt service is enabled
|
||||||
# in ``ENABLED_SERVICES``. If you're planning to use the Quantum
|
# in ``ENABLED_SERVICES``. If you're planning to use the Neutron
|
||||||
# linuxbridge plugin, set ``Q_PLUGIN`` to "linuxbridge" and make sure the
|
# linuxbridge plugin, set ``Q_PLUGIN`` to "linuxbridge" and make sure the
|
||||||
# q-agt service is enabled in ``ENABLED_SERVICES``.
|
# q-agt service is enabled in ``ENABLED_SERVICES``.
|
||||||
#
|
#
|
||||||
# See "Quantum Network Configuration" below for additional variables
|
# See "Neutron Network Configuration" below for additional variables
|
||||||
# that must be set in localrc for connectivity across hosts with
|
# that must be set in localrc for connectivity across hosts with
|
||||||
# Quantum.
|
# Neutron.
|
||||||
#
|
#
|
||||||
# With Quantum networking the NETWORK_MANAGER variable is ignored.
|
# With Neutron networking the NETWORK_MANAGER variable is ignored.
|
||||||
#
|
#
|
||||||
# To enable specific configuration options for either the Open vSwitch or
|
# To enable specific configuration options for either the Open vSwitch or
|
||||||
# LinuxBridge plugin, please see the top level README file under the
|
# LinuxBridge plugin, please see the top level README file under the
|
||||||
# Quantum section.
|
# Neutron section.
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
XTRACE=$(set +o | grep xtrace)
|
XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
|
|
||||||
# Quantum Network Configuration
|
# Neutron Network Configuration
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
|
|
||||||
# Gateway and subnet defaults, in case they are not customized in localrc
|
# Gateway and subnet defaults, in case they are not customized in localrc
|
||||||
@ -72,22 +72,29 @@ PRIVATE_SUBNET_NAME=${PRIVATE_SUBNET_NAME:-"private-subnet"}
|
|||||||
PUBLIC_SUBNET_NAME=${PUBLIC_SUBNET_NAME:-"public-subnet"}
|
PUBLIC_SUBNET_NAME=${PUBLIC_SUBNET_NAME:-"public-subnet"}
|
||||||
|
|
||||||
# Set up default directories
|
# Set up default directories
|
||||||
QUANTUM_DIR=$DEST/neutron
|
NEUTRON_DIR=$DEST/neutron
|
||||||
QUANTUMCLIENT_DIR=$DEST/python-neutronclient
|
NEUTRONCLIENT_DIR=$DEST/python-neutronclient
|
||||||
QUANTUM_AUTH_CACHE_DIR=${QUANTUM_AUTH_CACHE_DIR:-/var/cache/quantum}
|
NEUTRON_AUTH_CACHE_DIR=${NEUTRON_AUTH_CACHE_DIR:-/var/cache/neutron}
|
||||||
|
|
||||||
QUANTUM_CONF_DIR=/etc/quantum
|
# Support entry points installation of console scripts
|
||||||
QUANTUM_CONF=$QUANTUM_CONF_DIR/quantum.conf
|
if [[ -d $NEUTRON_DIR/bin/neutron-server ]]; then
|
||||||
export QUANTUM_TEST_CONFIG_FILE=${QUANTUM_TEST_CONFIG_FILE:-"$QUANTUM_CONF_DIR/debug.ini"}
|
NEUTRON_BIN_DIR=$NEUTRON_DIR/bin
|
||||||
|
else
|
||||||
|
NEUTRON_BIN_DIR=$(get_python_exec_prefix)
|
||||||
|
fi
|
||||||
|
|
||||||
# Default Quantum Plugin
|
NEUTRON_CONF_DIR=/etc/neutron
|
||||||
|
NEUTRON_CONF=$NEUTRON_CONF_DIR/neutron.conf
|
||||||
|
export NEUTRON_TEST_CONFIG_FILE=${NEUTRON_TEST_CONFIG_FILE:-"$NEUTRON_CONF_DIR/debug.ini"}
|
||||||
|
|
||||||
|
# Default Neutron Plugin
|
||||||
Q_PLUGIN=${Q_PLUGIN:-openvswitch}
|
Q_PLUGIN=${Q_PLUGIN:-openvswitch}
|
||||||
# Default Quantum Port
|
# Default Neutron Port
|
||||||
Q_PORT=${Q_PORT:-9696}
|
Q_PORT=${Q_PORT:-9696}
|
||||||
# Default Quantum Host
|
# Default Neutron Host
|
||||||
Q_HOST=${Q_HOST:-$SERVICE_HOST}
|
Q_HOST=${Q_HOST:-$SERVICE_HOST}
|
||||||
# Default admin username
|
# Default admin username
|
||||||
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-quantum}
|
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-neutron}
|
||||||
# Default auth strategy
|
# Default auth strategy
|
||||||
Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
|
Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
|
||||||
# Use namespace or not
|
# Use namespace or not
|
||||||
@ -99,27 +106,27 @@ Q_USE_ROOTWRAP=${Q_USE_ROOTWRAP:-True}
|
|||||||
Q_META_DATA_IP=${Q_META_DATA_IP:-$SERVICE_HOST}
|
Q_META_DATA_IP=${Q_META_DATA_IP:-$SERVICE_HOST}
|
||||||
# Allow Overlapping IP among subnets
|
# Allow Overlapping IP among subnets
|
||||||
Q_ALLOW_OVERLAPPING_IP=${Q_ALLOW_OVERLAPPING_IP:-True}
|
Q_ALLOW_OVERLAPPING_IP=${Q_ALLOW_OVERLAPPING_IP:-True}
|
||||||
# Use quantum-debug command
|
# Use neutron-debug command
|
||||||
Q_USE_DEBUG_COMMAND=${Q_USE_DEBUG_COMMAND:-False}
|
Q_USE_DEBUG_COMMAND=${Q_USE_DEBUG_COMMAND:-False}
|
||||||
# The name of the default q-l3 router
|
# The name of the default q-l3 router
|
||||||
Q_ROUTER_NAME=${Q_ROUTER_NAME:-router1}
|
Q_ROUTER_NAME=${Q_ROUTER_NAME:-router1}
|
||||||
# List of config file names in addition to the main plugin config file
|
# List of config file names in addition to the main plugin config file
|
||||||
# See _configure_quantum_common() for details about setting it up
|
# See _configure_neutron_common() for details about setting it up
|
||||||
declare -a Q_PLUGIN_EXTRA_CONF_FILES
|
declare -a Q_PLUGIN_EXTRA_CONF_FILES
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
Q_RR_CONF_FILE=$QUANTUM_CONF_DIR/rootwrap.conf
|
Q_RR_CONF_FILE=$NEUTRON_CONF_DIR/rootwrap.conf
|
||||||
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
|
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
|
||||||
Q_RR_COMMAND="sudo"
|
Q_RR_COMMAND="sudo"
|
||||||
else
|
else
|
||||||
QUANTUM_ROOTWRAP=$(get_rootwrap_location quantum)
|
NEUTRON_ROOTWRAP=$(get_rootwrap_location neutron)
|
||||||
Q_RR_COMMAND="sudo $QUANTUM_ROOTWRAP $Q_RR_CONF_FILE"
|
Q_RR_COMMAND="sudo $NEUTRON_ROOTWRAP $Q_RR_CONF_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Provider Network Configurations
|
# Provider Network Configurations
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
|
|
||||||
# The following variables control the Quantum openvswitch and
|
# The following variables control the Neutron openvswitch and
|
||||||
# linuxbridge plugins' allocation of tenant networks and
|
# linuxbridge plugins' allocation of tenant networks and
|
||||||
# availability of provider networks. If these are not configured
|
# availability of provider networks. If these are not configured
|
||||||
# in ``localrc``, tenant networks will be local to the host (with no
|
# in ``localrc``, tenant networks will be local to the host (with no
|
||||||
@ -183,20 +190,20 @@ if is_service_enabled quantum; then
|
|||||||
OVS_ENABLE_TUNNELING=${OVS_ENABLE_TUNNELING:-$ENABLE_TENANT_TUNNELS}
|
OVS_ENABLE_TUNNELING=${OVS_ENABLE_TUNNELING:-$ENABLE_TENANT_TUNNELS}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Quantum plugin specific functions
|
# Neutron plugin specific functions
|
||||||
# ---------------------------------
|
# ---------------------------------
|
||||||
|
|
||||||
# Please refer to ``lib/quantum_plugins/README.md`` for details.
|
# Please refer to ``lib/neutron_plugins/README.md`` for details.
|
||||||
source $TOP_DIR/lib/quantum_plugins/$Q_PLUGIN
|
source $TOP_DIR/lib/neutron_plugins/$Q_PLUGIN
|
||||||
|
|
||||||
# Agent loadbalancer service plugin functions
|
# Agent loadbalancer service plugin functions
|
||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
|
|
||||||
# Hardcoding for 1 service plugin for now
|
# Hardcoding for 1 service plugin for now
|
||||||
source $TOP_DIR/lib/quantum_plugins/services/loadbalancer
|
source $TOP_DIR/lib/neutron_plugins/services/loadbalancer
|
||||||
|
|
||||||
# Use security group or not
|
# Use security group or not
|
||||||
if has_quantum_plugin_security_group; then
|
if has_neutron_plugin_security_group; then
|
||||||
Q_USE_SECGROUP=${Q_USE_SECGROUP:-True}
|
Q_USE_SECGROUP=${Q_USE_SECGROUP:-True}
|
||||||
else
|
else
|
||||||
Q_USE_SECGROUP=False
|
Q_USE_SECGROUP=False
|
||||||
@ -205,36 +212,36 @@ fi
|
|||||||
# Functions
|
# Functions
|
||||||
# ---------
|
# ---------
|
||||||
|
|
||||||
# configure_quantum()
|
# configure_neutron()
|
||||||
# Set common config for all quantum server and agents.
|
# Set common config for all neutron server and agents.
|
||||||
function configure_quantum() {
|
function configure_neutron() {
|
||||||
_configure_quantum_common
|
_configure_neutron_common
|
||||||
iniset_rpc_backend quantum $QUANTUM_CONF DEFAULT
|
iniset_rpc_backend neutron $NEUTRON_CONF DEFAULT
|
||||||
|
|
||||||
# goes before q-svc to init Q_SERVICE_PLUGIN_CLASSES
|
# goes before q-svc to init Q_SERVICE_PLUGIN_CLASSES
|
||||||
if is_service_enabled q-lbaas; then
|
if is_service_enabled q-lbaas; then
|
||||||
_configure_quantum_lbaas
|
_configure_neutron_lbaas
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-svc; then
|
if is_service_enabled q-svc; then
|
||||||
_configure_quantum_service
|
_configure_neutron_service
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-agt; then
|
if is_service_enabled q-agt; then
|
||||||
_configure_quantum_plugin_agent
|
_configure_neutron_plugin_agent
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-dhcp; then
|
if is_service_enabled q-dhcp; then
|
||||||
_configure_quantum_dhcp_agent
|
_configure_neutron_dhcp_agent
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-l3; then
|
if is_service_enabled q-l3; then
|
||||||
_configure_quantum_l3_agent
|
_configure_neutron_l3_agent
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-meta; then
|
if is_service_enabled q-meta; then
|
||||||
_configure_quantum_metadata_agent
|
_configure_neutron_metadata_agent
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_configure_quantum_debug_command
|
_configure_neutron_debug_command
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_nova_conf_quantum() {
|
function create_nova_conf_neutron() {
|
||||||
iniset $NOVA_CONF DEFAULT network_api_class "nova.network.quantumv2.api.API"
|
iniset $NOVA_CONF DEFAULT network_api_class "nova.network.quantumv2.api.API"
|
||||||
iniset $NOVA_CONF DEFAULT quantum_admin_username "$Q_ADMIN_USERNAME"
|
iniset $NOVA_CONF DEFAULT quantum_admin_username "$Q_ADMIN_USERNAME"
|
||||||
iniset $NOVA_CONF DEFAULT quantum_admin_password "$SERVICE_PASSWORD"
|
iniset $NOVA_CONF DEFAULT quantum_admin_password "$SERVICE_PASSWORD"
|
||||||
@ -249,7 +256,7 @@ function create_nova_conf_quantum() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# set NOVA_VIF_DRIVER and optionally set options in nova_conf
|
# set NOVA_VIF_DRIVER and optionally set options in nova_conf
|
||||||
quantum_plugin_create_nova_conf
|
neutron_plugin_create_nova_conf
|
||||||
|
|
||||||
iniset $NOVA_CONF DEFAULT libvirt_vif_driver "$NOVA_VIF_DRIVER"
|
iniset $NOVA_CONF DEFAULT libvirt_vif_driver "$NOVA_VIF_DRIVER"
|
||||||
iniset $NOVA_CONF DEFAULT linuxnet_interface_driver "$LINUXNET_VIF_DRIVER"
|
iniset $NOVA_CONF DEFAULT linuxnet_interface_driver "$LINUXNET_VIF_DRIVER"
|
||||||
@ -258,38 +265,38 @@ function create_nova_conf_quantum() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# create_quantum_accounts() - Set up common required quantum accounts
|
# create_neutron_accounts() - Set up common required neutron accounts
|
||||||
|
|
||||||
# Tenant User Roles
|
# Tenant User Roles
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# service quantum admin # if enabled
|
# service neutron admin # if enabled
|
||||||
|
|
||||||
# Migrated from keystone_data.sh
|
# Migrated from keystone_data.sh
|
||||||
function create_quantum_accounts() {
|
function create_neutron_accounts() {
|
||||||
|
|
||||||
SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
||||||
ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
|
ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
|
||||||
|
|
||||||
if [[ "$ENABLED_SERVICES" =~ "q-svc" ]]; then
|
if [[ "$ENABLED_SERVICES" =~ "q-svc" ]]; then
|
||||||
QUANTUM_USER=$(keystone user-create \
|
NEUTRON_USER=$(keystone user-create \
|
||||||
--name=quantum \
|
--name=neutron \
|
||||||
--pass="$SERVICE_PASSWORD" \
|
--pass="$SERVICE_PASSWORD" \
|
||||||
--tenant_id $SERVICE_TENANT \
|
--tenant_id $SERVICE_TENANT \
|
||||||
--email=quantum@example.com \
|
--email=neutron@example.com \
|
||||||
| grep " id " | get_field 2)
|
| grep " id " | get_field 2)
|
||||||
keystone user-role-add \
|
keystone user-role-add \
|
||||||
--tenant_id $SERVICE_TENANT \
|
--tenant_id $SERVICE_TENANT \
|
||||||
--user_id $QUANTUM_USER \
|
--user_id $NEUTRON_USER \
|
||||||
--role_id $ADMIN_ROLE
|
--role_id $ADMIN_ROLE
|
||||||
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
||||||
QUANTUM_SERVICE=$(keystone service-create \
|
NEUTRON_SERVICE=$(keystone service-create \
|
||||||
--name=quantum \
|
--name=neutron \
|
||||||
--type=network \
|
--type=network \
|
||||||
--description="Quantum Service" \
|
--description="Neutron Service" \
|
||||||
| grep " id " | get_field 2)
|
| grep " id " | get_field 2)
|
||||||
keystone endpoint-create \
|
keystone endpoint-create \
|
||||||
--region RegionOne \
|
--region RegionOne \
|
||||||
--service_id $QUANTUM_SERVICE \
|
--service_id $NEUTRON_SERVICE \
|
||||||
--publicurl "http://$SERVICE_HOST:9696/" \
|
--publicurl "http://$SERVICE_HOST:9696/" \
|
||||||
--adminurl "http://$SERVICE_HOST:9696/" \
|
--adminurl "http://$SERVICE_HOST:9696/" \
|
||||||
--internalurl "http://$SERVICE_HOST:9696/"
|
--internalurl "http://$SERVICE_HOST:9696/"
|
||||||
@ -297,11 +304,11 @@ function create_quantum_accounts() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_quantum_initial_network() {
|
function create_neutron_initial_network() {
|
||||||
TENANT_ID=$(keystone tenant-list | grep " demo " | get_field 1)
|
TENANT_ID=$(keystone tenant-list | grep " demo " | get_field 1)
|
||||||
|
|
||||||
# Create a small network
|
# Create a small network
|
||||||
# Since quantum command is executed in admin context at this point,
|
# Since neutron command is executed in admin context at this point,
|
||||||
# ``--tenant_id`` needs to be specified.
|
# ``--tenant_id`` needs to be specified.
|
||||||
if is_baremetal; then
|
if is_baremetal; then
|
||||||
sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
|
sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE
|
||||||
@ -309,36 +316,36 @@ function create_quantum_initial_network() {
|
|||||||
sudo ip addr del $IP dev $PUBLIC_INTERFACE
|
sudo ip addr del $IP dev $PUBLIC_INTERFACE
|
||||||
sudo ip addr add $IP dev $OVS_PHYSICAL_BRIDGE
|
sudo ip addr add $IP dev $OVS_PHYSICAL_BRIDGE
|
||||||
done
|
done
|
||||||
NET_ID=$(quantum net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type flat --provider:physical_network "$PHYSICAL_NETWORK" | grep ' id ' | get_field 2)
|
NET_ID=$(neutron net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type flat --provider:physical_network "$PHYSICAL_NETWORK" | grep ' id ' | get_field 2)
|
||||||
SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --gateway $NETWORK_GATEWAY --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
|
SUBNET_ID=$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --gateway $NETWORK_GATEWAY --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
|
||||||
sudo ifconfig $OVS_PHYSICAL_BRIDGE up
|
sudo ifconfig $OVS_PHYSICAL_BRIDGE up
|
||||||
else
|
else
|
||||||
NET_ID=$(quantum net-create --tenant_id $TENANT_ID "$PRIVATE_NETWORK_NAME" | grep ' id ' | get_field 2)
|
NET_ID=$(neutron net-create --tenant_id $TENANT_ID "$PRIVATE_NETWORK_NAME" | grep ' id ' | get_field 2)
|
||||||
SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
|
SUBNET_ID=$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep ' id ' | get_field 2)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$Q_L3_ENABLED" == "True" ]]; then
|
if [[ "$Q_L3_ENABLED" == "True" ]]; then
|
||||||
# Create a router, and add the private subnet as one of its interfaces
|
# Create a router, and add the private subnet as one of its interfaces
|
||||||
if [[ "$Q_L3_ROUTER_PER_TENANT" == "True" ]]; then
|
if [[ "$Q_L3_ROUTER_PER_TENANT" == "True" ]]; then
|
||||||
# create a tenant-owned router.
|
# create a tenant-owned router.
|
||||||
ROUTER_ID=$(quantum router-create --tenant_id $TENANT_ID $Q_ROUTER_NAME | grep ' id ' | get_field 2)
|
ROUTER_ID=$(neutron router-create --tenant_id $TENANT_ID $Q_ROUTER_NAME | grep ' id ' | get_field 2)
|
||||||
else
|
else
|
||||||
# Plugin only supports creating a single router, which should be admin owned.
|
# Plugin only supports creating a single router, which should be admin owned.
|
||||||
ROUTER_ID=$(quantum router-create $Q_ROUTER_NAME | grep ' id ' | get_field 2)
|
ROUTER_ID=$(neutron router-create $Q_ROUTER_NAME | grep ' id ' | get_field 2)
|
||||||
fi
|
fi
|
||||||
quantum router-interface-add $ROUTER_ID $SUBNET_ID
|
neutron router-interface-add $ROUTER_ID $SUBNET_ID
|
||||||
# Create an external network, and a subnet. Configure the external network as router gw
|
# Create an external network, and a subnet. Configure the external network as router gw
|
||||||
EXT_NET_ID=$(quantum net-create "$PUBLIC_NETWORK_NAME" -- --router:external=True | grep ' id ' | get_field 2)
|
EXT_NET_ID=$(neutron net-create "$PUBLIC_NETWORK_NAME" -- --router:external=True | grep ' id ' | get_field 2)
|
||||||
EXT_GW_IP=$(quantum subnet-create --ip_version 4 ${Q_FLOATING_ALLOCATION_POOL:+--allocation-pool $Q_FLOATING_ALLOCATION_POOL} --gateway $PUBLIC_NETWORK_GATEWAY --name $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE -- --enable_dhcp=False | grep 'gateway_ip' | get_field 2)
|
EXT_GW_IP=$(neutron subnet-create --ip_version 4 ${Q_FLOATING_ALLOCATION_POOL:+--allocation-pool $Q_FLOATING_ALLOCATION_POOL} --gateway $PUBLIC_NETWORK_GATEWAY --name $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE -- --enable_dhcp=False | grep 'gateway_ip' | get_field 2)
|
||||||
quantum router-gateway-set $ROUTER_ID $EXT_NET_ID
|
neutron router-gateway-set $ROUTER_ID $EXT_NET_ID
|
||||||
|
|
||||||
if is_service_enabled q-l3; then
|
if is_service_enabled q-l3; then
|
||||||
# logic is specific to using the l3-agent for l3
|
# logic is specific to using the l3-agent for l3
|
||||||
if is_quantum_ovs_base_plugin && [[ "$Q_USE_NAMESPACE" = "True" ]]; then
|
if is_neutron_ovs_base_plugin && [[ "$Q_USE_NAMESPACE" = "True" ]]; then
|
||||||
CIDR_LEN=${FLOATING_RANGE#*/}
|
CIDR_LEN=${FLOATING_RANGE#*/}
|
||||||
sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $PUBLIC_BRIDGE
|
sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $PUBLIC_BRIDGE
|
||||||
sudo ip link set $PUBLIC_BRIDGE up
|
sudo ip link set $PUBLIC_BRIDGE up
|
||||||
ROUTER_GW_IP=`quantum port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F '"' '{ print $8; }'`
|
ROUTER_GW_IP=`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F '"' '{ print $8; }'`
|
||||||
sudo route add -net $FIXED_RANGE gw $ROUTER_GW_IP
|
sudo route add -net $FIXED_RANGE gw $ROUTER_GW_IP
|
||||||
fi
|
fi
|
||||||
if [[ "$Q_USE_NAMESPACE" == "False" ]]; then
|
if [[ "$Q_USE_NAMESPACE" == "False" ]]; then
|
||||||
@ -349,313 +356,313 @@ function create_quantum_initial_network() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# init_quantum() - Initialize databases, etc.
|
# init_neutron() - Initialize databases, etc.
|
||||||
function init_quantum() {
|
function init_neutron() {
|
||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_quantum() - Collect source and prepare
|
# install_neutron() - Collect source and prepare
|
||||||
function install_quantum() {
|
function install_neutron() {
|
||||||
git_clone $QUANTUM_REPO $QUANTUM_DIR $QUANTUM_BRANCH
|
git_clone $NEUTRON_REPO $NEUTRON_DIR $NEUTRON_BRANCH
|
||||||
setup_develop $QUANTUM_DIR
|
setup_develop $NEUTRON_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_quantumclient() - Collect source and prepare
|
# install_neutronclient() - Collect source and prepare
|
||||||
function install_quantumclient() {
|
function install_neutronclient() {
|
||||||
git_clone $QUANTUMCLIENT_REPO $QUANTUMCLIENT_DIR $QUANTUMCLIENT_BRANCH
|
git_clone $NEUTRONCLIENT_REPO $NEUTRONCLIENT_DIR $NEUTRONCLIENT_BRANCH
|
||||||
setup_develop $QUANTUMCLIENT_DIR
|
setup_develop $NEUTRONCLIENT_DIR
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_quantum_agent_packages() - Collect source and prepare
|
# install_neutron_agent_packages() - Collect source and prepare
|
||||||
function install_quantum_agent_packages() {
|
function install_neutron_agent_packages() {
|
||||||
# install packages that are specific to plugin agent(s)
|
# install packages that are specific to plugin agent(s)
|
||||||
if is_service_enabled q-agt q-dhcp q-l3; then
|
if is_service_enabled q-agt q-dhcp q-l3; then
|
||||||
quantum_plugin_install_agent_packages
|
neutron_plugin_install_agent_packages
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled q-lbaas; then
|
if is_service_enabled q-lbaas; then
|
||||||
quantum_agent_lbaas_install_agent_packages
|
neutron_agent_lbaas_install_agent_packages
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start running processes, including screen
|
# Start running processes, including screen
|
||||||
function start_quantum_service_and_check() {
|
function start_neutron_service_and_check() {
|
||||||
# build config-file options
|
# build config-file options
|
||||||
local cfg_file
|
local cfg_file
|
||||||
local CFG_FILE_OPTIONS="--config-file $QUANTUM_CONF --config-file /$Q_PLUGIN_CONF_FILE"
|
local CFG_FILE_OPTIONS="--config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
|
||||||
for cfg_file in ${Q_PLUGIN_EXTRA_CONF_FILES[@]}; do
|
for cfg_file in ${Q_PLUGIN_EXTRA_CONF_FILES[@]}; do
|
||||||
CFG_FILE_OPTIONS+=" --config-file /$cfg_file"
|
CFG_FILE_OPTIONS+=" --config-file /$cfg_file"
|
||||||
done
|
done
|
||||||
# Start the Quantum service
|
# Start the Neutron service
|
||||||
screen_it q-svc "cd $QUANTUM_DIR && python $QUANTUM_DIR/bin/quantum-server $CFG_FILE_OPTIONS"
|
screen_it q-svc "cd $NEUTRON_DIR && python $NEUTRON_BIN_DIR/neutron-server $CFG_FILE_OPTIONS"
|
||||||
echo "Waiting for Quantum to start..."
|
echo "Waiting for Neutron to start..."
|
||||||
if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://$Q_HOST:$Q_PORT; do sleep 1; done"; then
|
if ! timeout $SERVICE_TIMEOUT sh -c "while ! http_proxy= wget -q -O- http://$Q_HOST:$Q_PORT; do sleep 1; done"; then
|
||||||
die $LINENO "Quantum did not start"
|
die $LINENO "Neutron did not start"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start running processes, including screen
|
# Start running processes, including screen
|
||||||
function start_quantum_agents() {
|
function start_neutron_agents() {
|
||||||
# Start up the quantum agents if enabled
|
# Start up the neutron agents if enabled
|
||||||
screen_it q-agt "cd $QUANTUM_DIR && python $AGENT_BINARY --config-file $QUANTUM_CONF --config-file /$Q_PLUGIN_CONF_FILE"
|
screen_it q-agt "cd $NEUTRON_DIR && python $AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE"
|
||||||
screen_it q-dhcp "cd $QUANTUM_DIR && python $AGENT_DHCP_BINARY --config-file $QUANTUM_CONF --config-file=$Q_DHCP_CONF_FILE"
|
screen_it q-dhcp "cd $NEUTRON_DIR && python $AGENT_DHCP_BINARY --config-file $NEUTRON_CONF --config-file=$Q_DHCP_CONF_FILE"
|
||||||
screen_it q-l3 "cd $QUANTUM_DIR && python $AGENT_L3_BINARY --config-file $QUANTUM_CONF --config-file=$Q_L3_CONF_FILE"
|
screen_it q-l3 "cd $NEUTRON_DIR && python $AGENT_L3_BINARY --config-file $NEUTRON_CONF --config-file=$Q_L3_CONF_FILE"
|
||||||
screen_it q-meta "cd $QUANTUM_DIR && python $AGENT_META_BINARY --config-file $QUANTUM_CONF --config-file=$Q_META_CONF_FILE"
|
screen_it q-meta "cd $NEUTRON_DIR && python $AGENT_META_BINARY --config-file $NEUTRON_CONF --config-file=$Q_META_CONF_FILE"
|
||||||
|
|
||||||
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
||||||
# For XenServer, start an agent for the domU openvswitch
|
# For XenServer, start an agent for the domU openvswitch
|
||||||
screen_it q-domua "cd $QUANTUM_DIR && python $AGENT_BINARY --config-file $QUANTUM_CONF --config-file /$Q_PLUGIN_CONF_FILE.domU"
|
screen_it q-domua "cd $NEUTRON_DIR && python $AGENT_BINARY --config-file $NEUTRON_CONF --config-file /$Q_PLUGIN_CONF_FILE.domU"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled q-lbaas; then
|
if is_service_enabled q-lbaas; then
|
||||||
screen_it q-lbaas "cd $QUANTUM_DIR && python $AGENT_LBAAS_BINARY --config-file $QUANTUM_CONF --config-file=$LBAAS_AGENT_CONF_FILENAME"
|
screen_it q-lbaas "cd $NEUTRON_DIR && python $AGENT_LBAAS_BINARY --config-file $NEUTRON_CONF --config-file=$LBAAS_AGENT_CONF_FILENAME"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# stop_quantum() - Stop running processes (non-screen)
|
# stop_neutron() - Stop running processes (non-screen)
|
||||||
function stop_quantum() {
|
function stop_neutron() {
|
||||||
if is_service_enabled q-dhcp; then
|
if is_service_enabled q-dhcp; then
|
||||||
pid=$(ps aux | awk '/[d]nsmasq.+interface=(tap|ns-)/ { print $2 }')
|
pid=$(ps aux | awk '/[d]nsmasq.+interface=(tap|ns-)/ { print $2 }')
|
||||||
[ ! -z "$pid" ] && sudo kill -9 $pid
|
[ ! -z "$pid" ] && sudo kill -9 $pid
|
||||||
fi
|
fi
|
||||||
if is_service_enabled q-meta; then
|
if is_service_enabled q-meta; then
|
||||||
pid=$(ps aux | awk '/quantum-ns-metadata-proxy/ { print $2 }')
|
pid=$(ps aux | awk '/neutron-ns-metadata-proxy/ { print $2 }')
|
||||||
[ ! -z "$pid" ] && sudo kill -9 $pid
|
[ ! -z "$pid" ] && sudo kill -9 $pid
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# cleanup_quantum() - Remove residual data files, anything left over from previous
|
# cleanup_neutron() - Remove residual data files, anything left over from previous
|
||||||
# runs that a clean run would need to clean up
|
# runs that a clean run would need to clean up
|
||||||
function cleanup_quantum() {
|
function cleanup_neutron() {
|
||||||
if is_quantum_ovs_base_plugin; then
|
if is_neutron_ovs_base_plugin; then
|
||||||
quantum_ovs_base_cleanup
|
neutron_ovs_base_cleanup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# delete all namespaces created by quantum
|
# delete all namespaces created by neutron
|
||||||
for ns in $(sudo ip netns list | grep -o -e qdhcp-[0-9a-f\-]* -e qrouter-[0-9a-f\-]*); do
|
for ns in $(sudo ip netns list | grep -o -e qdhcp-[0-9a-f\-]* -e qrouter-[0-9a-f\-]*); do
|
||||||
sudo ip netns delete ${ns}
|
sudo ip netns delete ${ns}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# _configure_quantum_common()
|
# _configure_neutron_common()
|
||||||
# Set common config for all quantum server and agents.
|
# Set common config for all neutron server and agents.
|
||||||
# This MUST be called before other ``_configure_quantum_*`` functions.
|
# This MUST be called before other ``_configure_neutron_*`` functions.
|
||||||
function _configure_quantum_common() {
|
function _configure_neutron_common() {
|
||||||
# Put config files in ``QUANTUM_CONF_DIR`` for everyone to find
|
# Put config files in ``NEUTRON_CONF_DIR`` for everyone to find
|
||||||
if [[ ! -d $QUANTUM_CONF_DIR ]]; then
|
if [[ ! -d $NEUTRON_CONF_DIR ]]; then
|
||||||
sudo mkdir -p $QUANTUM_CONF_DIR
|
sudo mkdir -p $NEUTRON_CONF_DIR
|
||||||
fi
|
fi
|
||||||
sudo chown $STACK_USER $QUANTUM_CONF_DIR
|
sudo chown $STACK_USER $NEUTRON_CONF_DIR
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/quantum.conf $QUANTUM_CONF
|
cp $NEUTRON_DIR/etc/neutron.conf $NEUTRON_CONF
|
||||||
|
|
||||||
# Set plugin-specific variables ``Q_DB_NAME``, ``Q_PLUGIN_CLASS``.
|
# Set plugin-specific variables ``Q_DB_NAME``, ``Q_PLUGIN_CLASS``.
|
||||||
# For main plugin config file, set ``Q_PLUGIN_CONF_PATH``, ``Q_PLUGIN_CONF_FILENAME``.
|
# For main plugin config file, set ``Q_PLUGIN_CONF_PATH``, ``Q_PLUGIN_CONF_FILENAME``.
|
||||||
# For addition plugin config files, set ``Q_PLUGIN_EXTRA_CONF_PATH``,
|
# For addition plugin config files, set ``Q_PLUGIN_EXTRA_CONF_PATH``,
|
||||||
# ``Q_PLUGIN_EXTRA_CONF_FILES``. For example:
|
# ``Q_PLUGIN_EXTRA_CONF_FILES``. For example:
|
||||||
# ``Q_PLUGIN_EXTRA_CONF_FILES=(file1, file2)``
|
# ``Q_PLUGIN_EXTRA_CONF_FILES=(file1, file2)``
|
||||||
quantum_plugin_configure_common
|
neutron_plugin_configure_common
|
||||||
|
|
||||||
if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then
|
if [[ $Q_PLUGIN_CONF_PATH == '' || $Q_PLUGIN_CONF_FILENAME == '' || $Q_PLUGIN_CLASS == '' ]]; then
|
||||||
die $LINENO "Quantum plugin not set.. exiting"
|
die $LINENO "Neutron plugin not set.. exiting"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If needed, move config file from ``$QUANTUM_DIR/etc/quantum`` to ``QUANTUM_CONF_DIR``
|
# If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``
|
||||||
mkdir -p /$Q_PLUGIN_CONF_PATH
|
mkdir -p /$Q_PLUGIN_CONF_PATH
|
||||||
Q_PLUGIN_CONF_FILE=$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME
|
Q_PLUGIN_CONF_FILE=$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME
|
||||||
cp $QUANTUM_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE
|
cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE
|
||||||
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE database connection `database_connection_url $Q_DB_NAME`
|
iniset /$Q_PLUGIN_CONF_FILE database connection `database_connection_url $Q_DB_NAME`
|
||||||
iniset $QUANTUM_CONF DEFAULT state_path $DATA_DIR/quantum
|
iniset $NEUTRON_CONF DEFAULT state_path $DATA_DIR/neutron
|
||||||
|
|
||||||
# If addition config files are set, make sure their path name is set as well
|
# If addition config files are set, make sure their path name is set as well
|
||||||
if [[ ${#Q_PLUGIN_EXTRA_CONF_FILES[@]} > 0 && $Q_PLUGIN_EXTRA_CONF_PATH == '' ]]; then
|
if [[ ${#Q_PLUGIN_EXTRA_CONF_FILES[@]} > 0 && $Q_PLUGIN_EXTRA_CONF_PATH == '' ]]; then
|
||||||
die $LINENO "Quantum additional plugin config not set.. exiting"
|
die $LINENO "Neutron additional plugin config not set.. exiting"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If additional config files exist, copy them over to quantum configuration
|
# If additional config files exist, copy them over to neutron configuration
|
||||||
# directory
|
# directory
|
||||||
if [[ $Q_PLUGIN_EXTRA_CONF_PATH != '' ]]; then
|
if [[ $Q_PLUGIN_EXTRA_CONF_PATH != '' ]]; then
|
||||||
mkdir -p /$Q_PLUGIN_EXTRA_CONF_PATH
|
mkdir -p /$Q_PLUGIN_EXTRA_CONF_PATH
|
||||||
local f
|
local f
|
||||||
for (( f=0; $f < ${#Q_PLUGIN_EXTRA_CONF_FILES[@]}; f+=1 )); do
|
for (( f=0; $f < ${#Q_PLUGIN_EXTRA_CONF_FILES[@]}; f+=1 )); do
|
||||||
Q_PLUGIN_EXTRA_CONF_FILES[$f]=$Q_PLUGIN_EXTRA_CONF_PATH/${Q_PLUGIN_EXTRA_CONF_FILES[$f]}
|
Q_PLUGIN_EXTRA_CONF_FILES[$f]=$Q_PLUGIN_EXTRA_CONF_PATH/${Q_PLUGIN_EXTRA_CONF_FILES[$f]}
|
||||||
cp $QUANTUM_DIR/${Q_PLUGIN_EXTRA_CONF_FILES[$f]} /${Q_PLUGIN_EXTRA_CONF_FILES[$f]}
|
cp $NEUTRON_DIR/${Q_PLUGIN_EXTRA_CONF_FILES[$f]} /${Q_PLUGIN_EXTRA_CONF_FILES[$f]}
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_quantum_setup_rootwrap
|
_neutron_setup_rootwrap
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_quantum_debug_command() {
|
function _configure_neutron_debug_command() {
|
||||||
if [[ "$Q_USE_DEBUG_COMMAND" != "True" ]]; then
|
if [[ "$Q_USE_DEBUG_COMMAND" != "True" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/l3_agent.ini $QUANTUM_TEST_CONFIG_FILE
|
cp $NEUTRON_DIR/etc/l3_agent.ini $NEUTRON_TEST_CONFIG_FILE
|
||||||
|
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT verbose False
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT verbose False
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT debug False
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT debug False
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
||||||
# Intermediate fix until Quantum patch lands and then line above will
|
# Intermediate fix until Neutron patch lands and then line above will
|
||||||
# be cleaned.
|
# be cleaned.
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE agent root_helper "$Q_RR_COMMAND"
|
iniset $NEUTRON_TEST_CONFIG_FILE agent root_helper "$Q_RR_COMMAND"
|
||||||
|
|
||||||
_quantum_setup_keystone $QUANTUM_TEST_CONFIG_FILE DEFAULT set_auth_url
|
_neutron_setup_keystone $NEUTRON_TEST_CONFIG_FILE DEFAULT set_auth_url
|
||||||
_quantum_setup_interface_driver $QUANTUM_TEST_CONFIG_FILE
|
_neutron_setup_interface_driver $NEUTRON_TEST_CONFIG_FILE
|
||||||
|
|
||||||
quantum_plugin_configure_debug_command
|
neutron_plugin_configure_debug_command
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_quantum_dhcp_agent() {
|
function _configure_neutron_dhcp_agent() {
|
||||||
AGENT_DHCP_BINARY="$QUANTUM_DIR/bin/quantum-dhcp-agent"
|
AGENT_DHCP_BINARY="$NEUTRON_BIN_DIR/neutron-dhcp-agent"
|
||||||
Q_DHCP_CONF_FILE=$QUANTUM_CONF_DIR/dhcp_agent.ini
|
Q_DHCP_CONF_FILE=$NEUTRON_CONF_DIR/dhcp_agent.ini
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
|
cp $NEUTRON_DIR/etc/dhcp_agent.ini $Q_DHCP_CONF_FILE
|
||||||
|
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT verbose True
|
iniset $Q_DHCP_CONF_FILE DEFAULT verbose True
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT debug True
|
iniset $Q_DHCP_CONF_FILE DEFAULT debug True
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
iniset $Q_DHCP_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
iniset $Q_DHCP_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
||||||
|
|
||||||
_quantum_setup_keystone $Q_DHCP_CONF_FILE DEFAULT set_auth_url
|
_neutron_setup_keystone $Q_DHCP_CONF_FILE DEFAULT set_auth_url
|
||||||
_quantum_setup_interface_driver $Q_DHCP_CONF_FILE
|
_neutron_setup_interface_driver $Q_DHCP_CONF_FILE
|
||||||
|
|
||||||
quantum_plugin_configure_dhcp_agent
|
neutron_plugin_configure_dhcp_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_quantum_l3_agent() {
|
function _configure_neutron_l3_agent() {
|
||||||
Q_L3_ENABLED=True
|
Q_L3_ENABLED=True
|
||||||
# for l3-agent, only use per tenant router if we have namespaces
|
# for l3-agent, only use per tenant router if we have namespaces
|
||||||
Q_L3_ROUTER_PER_TENANT=$Q_USE_NAMESPACE
|
Q_L3_ROUTER_PER_TENANT=$Q_USE_NAMESPACE
|
||||||
AGENT_L3_BINARY="$QUANTUM_DIR/bin/quantum-l3-agent"
|
AGENT_L3_BINARY="$NEUTRON_BIN_DIR/neutron-l3-agent"
|
||||||
Q_L3_CONF_FILE=$QUANTUM_CONF_DIR/l3_agent.ini
|
Q_L3_CONF_FILE=$NEUTRON_CONF_DIR/l3_agent.ini
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
|
cp $NEUTRON_DIR/etc/l3_agent.ini $Q_L3_CONF_FILE
|
||||||
|
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT verbose True
|
iniset $Q_L3_CONF_FILE DEFAULT verbose True
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT debug True
|
iniset $Q_L3_CONF_FILE DEFAULT debug True
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
iniset $Q_L3_CONF_FILE DEFAULT use_namespaces $Q_USE_NAMESPACE
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
iniset $Q_L3_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
||||||
|
|
||||||
_quantum_setup_keystone $Q_L3_CONF_FILE DEFAULT set_auth_url
|
_neutron_setup_keystone $Q_L3_CONF_FILE DEFAULT set_auth_url
|
||||||
_quantum_setup_interface_driver $Q_L3_CONF_FILE
|
_neutron_setup_interface_driver $Q_L3_CONF_FILE
|
||||||
|
|
||||||
quantum_plugin_configure_l3_agent
|
neutron_plugin_configure_l3_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_quantum_metadata_agent() {
|
function _configure_neutron_metadata_agent() {
|
||||||
AGENT_META_BINARY="$QUANTUM_DIR/bin/quantum-metadata-agent"
|
AGENT_META_BINARY="$NEUTRON_BIN_DIR/neutron-metadata-agent"
|
||||||
Q_META_CONF_FILE=$QUANTUM_CONF_DIR/metadata_agent.ini
|
Q_META_CONF_FILE=$NEUTRON_CONF_DIR/metadata_agent.ini
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
|
cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE
|
||||||
|
|
||||||
iniset $Q_META_CONF_FILE DEFAULT verbose True
|
iniset $Q_META_CONF_FILE DEFAULT verbose True
|
||||||
iniset $Q_META_CONF_FILE DEFAULT debug True
|
iniset $Q_META_CONF_FILE DEFAULT debug True
|
||||||
iniset $Q_META_CONF_FILE DEFAULT nova_metadata_ip $Q_META_DATA_IP
|
iniset $Q_META_CONF_FILE DEFAULT nova_metadata_ip $Q_META_DATA_IP
|
||||||
iniset $Q_META_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
iniset $Q_META_CONF_FILE DEFAULT root_helper "$Q_RR_COMMAND"
|
||||||
|
|
||||||
_quantum_setup_keystone $Q_META_CONF_FILE DEFAULT set_auth_url
|
_neutron_setup_keystone $Q_META_CONF_FILE DEFAULT set_auth_url
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_quantum_lbaas() {
|
function _configure_neutron_lbaas() {
|
||||||
quantum_agent_lbaas_configure_common
|
neutron_agent_lbaas_configure_common
|
||||||
quantum_agent_lbaas_configure_agent
|
neutron_agent_lbaas_configure_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
# _configure_quantum_plugin_agent() - Set config files for quantum plugin agent
|
# _configure_neutron_plugin_agent() - Set config files for neutron plugin agent
|
||||||
# It is called when q-agt is enabled.
|
# It is called when q-agt is enabled.
|
||||||
function _configure_quantum_plugin_agent() {
|
function _configure_neutron_plugin_agent() {
|
||||||
# Specify the default root helper prior to agent configuration to
|
# Specify the default root helper prior to agent configuration to
|
||||||
# ensure that an agent's configuration can override the default
|
# ensure that an agent's configuration can override the default
|
||||||
iniset /$Q_PLUGIN_CONF_FILE agent root_helper "$Q_RR_COMMAND"
|
iniset /$Q_PLUGIN_CONF_FILE agent root_helper "$Q_RR_COMMAND"
|
||||||
iniset $QUANTUM_CONF DEFAULT verbose True
|
iniset $NEUTRON_CONF DEFAULT verbose True
|
||||||
iniset $QUANTUM_CONF DEFAULT debug True
|
iniset $NEUTRON_CONF DEFAULT debug True
|
||||||
|
|
||||||
# Configure agent for plugin
|
# Configure agent for plugin
|
||||||
quantum_plugin_configure_plugin_agent
|
neutron_plugin_configure_plugin_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
# _configure_quantum_service() - Set config files for quantum service
|
# _configure_neutron_service() - Set config files for neutron service
|
||||||
# It is called when q-svc is enabled.
|
# It is called when q-svc is enabled.
|
||||||
function _configure_quantum_service() {
|
function _configure_neutron_service() {
|
||||||
Q_API_PASTE_FILE=$QUANTUM_CONF_DIR/api-paste.ini
|
Q_API_PASTE_FILE=$NEUTRON_CONF_DIR/api-paste.ini
|
||||||
Q_POLICY_FILE=$QUANTUM_CONF_DIR/policy.json
|
Q_POLICY_FILE=$NEUTRON_CONF_DIR/policy.json
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/api-paste.ini $Q_API_PASTE_FILE
|
cp $NEUTRON_DIR/etc/api-paste.ini $Q_API_PASTE_FILE
|
||||||
cp $QUANTUM_DIR/etc/policy.json $Q_POLICY_FILE
|
cp $NEUTRON_DIR/etc/policy.json $Q_POLICY_FILE
|
||||||
|
|
||||||
if is_service_enabled $DATABASE_BACKENDS; then
|
if is_service_enabled $DATABASE_BACKENDS; then
|
||||||
recreate_database $Q_DB_NAME utf8
|
recreate_database $Q_DB_NAME utf8
|
||||||
else
|
else
|
||||||
die $LINENO "A database must be enabled in order to use the $Q_PLUGIN Quantum plugin."
|
die $LINENO "A database must be enabled in order to use the $Q_PLUGIN Neutron plugin."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update either configuration file with plugin
|
# Update either configuration file with plugin
|
||||||
iniset $QUANTUM_CONF DEFAULT core_plugin $Q_PLUGIN_CLASS
|
iniset $NEUTRON_CONF DEFAULT core_plugin $Q_PLUGIN_CLASS
|
||||||
|
|
||||||
if [[ $Q_SERVICE_PLUGIN_CLASSES != '' ]]; then
|
if [[ $Q_SERVICE_PLUGIN_CLASSES != '' ]]; then
|
||||||
iniset $QUANTUM_CONF DEFAULT service_plugins $Q_SERVICE_PLUGIN_CLASSES
|
iniset $NEUTRON_CONF DEFAULT service_plugins $Q_SERVICE_PLUGIN_CLASSES
|
||||||
fi
|
fi
|
||||||
|
|
||||||
iniset $QUANTUM_CONF DEFAULT verbose True
|
iniset $NEUTRON_CONF DEFAULT verbose True
|
||||||
iniset $QUANTUM_CONF DEFAULT debug True
|
iniset $NEUTRON_CONF DEFAULT debug True
|
||||||
iniset $QUANTUM_CONF DEFAULT policy_file $Q_POLICY_FILE
|
iniset $NEUTRON_CONF DEFAULT policy_file $Q_POLICY_FILE
|
||||||
iniset $QUANTUM_CONF DEFAULT allow_overlapping_ips $Q_ALLOW_OVERLAPPING_IP
|
iniset $NEUTRON_CONF DEFAULT allow_overlapping_ips $Q_ALLOW_OVERLAPPING_IP
|
||||||
|
|
||||||
iniset $QUANTUM_CONF DEFAULT auth_strategy $Q_AUTH_STRATEGY
|
iniset $NEUTRON_CONF DEFAULT auth_strategy $Q_AUTH_STRATEGY
|
||||||
_quantum_setup_keystone $QUANTUM_CONF keystone_authtoken
|
_neutron_setup_keystone $NEUTRON_CONF keystone_authtoken
|
||||||
|
|
||||||
# Configure plugin
|
# Configure plugin
|
||||||
quantum_plugin_configure_service
|
neutron_plugin_configure_service
|
||||||
}
|
}
|
||||||
|
|
||||||
# Utility Functions
|
# Utility Functions
|
||||||
#------------------
|
#------------------
|
||||||
|
|
||||||
# _quantum_setup_rootwrap() - configure Quantum's rootwrap
|
# _neutron_setup_rootwrap() - configure Neutron's rootwrap
|
||||||
function _quantum_setup_rootwrap() {
|
function _neutron_setup_rootwrap() {
|
||||||
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
|
if [[ "$Q_USE_ROOTWRAP" == "False" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
# Deploy new rootwrap filters files (owned by root).
|
# Deploy new rootwrap filters files (owned by root).
|
||||||
# Wipe any existing ``rootwrap.d`` files first
|
# Wipe any existing ``rootwrap.d`` files first
|
||||||
Q_CONF_ROOTWRAP_D=$QUANTUM_CONF_DIR/rootwrap.d
|
Q_CONF_ROOTWRAP_D=$NEUTRON_CONF_DIR/rootwrap.d
|
||||||
if [[ -d $Q_CONF_ROOTWRAP_D ]]; then
|
if [[ -d $Q_CONF_ROOTWRAP_D ]]; then
|
||||||
sudo rm -rf $Q_CONF_ROOTWRAP_D
|
sudo rm -rf $Q_CONF_ROOTWRAP_D
|
||||||
fi
|
fi
|
||||||
# Deploy filters to ``$QUANTUM_CONF_DIR/rootwrap.d``
|
# Deploy filters to ``$NEUTRON_CONF_DIR/rootwrap.d``
|
||||||
mkdir -p -m 755 $Q_CONF_ROOTWRAP_D
|
mkdir -p -m 755 $Q_CONF_ROOTWRAP_D
|
||||||
cp -pr $QUANTUM_DIR/etc/quantum/rootwrap.d/* $Q_CONF_ROOTWRAP_D/
|
cp -pr $NEUTRON_DIR/etc/neutron/rootwrap.d/* $Q_CONF_ROOTWRAP_D/
|
||||||
sudo chown -R root:root $Q_CONF_ROOTWRAP_D
|
sudo chown -R root:root $Q_CONF_ROOTWRAP_D
|
||||||
sudo chmod 644 $Q_CONF_ROOTWRAP_D/*
|
sudo chmod 644 $Q_CONF_ROOTWRAP_D/*
|
||||||
# Set up ``rootwrap.conf``, pointing to ``$QUANTUM_CONF_DIR/rootwrap.d``
|
# Set up ``rootwrap.conf``, pointing to ``$NEUTRON_CONF_DIR/rootwrap.d``
|
||||||
# location moved in newer versions, prefer new location
|
# location moved in newer versions, prefer new location
|
||||||
if test -r $QUANTUM_DIR/etc/quantum/rootwrap.conf; then
|
if test -r $NEUTRON_DIR/etc/neutron/rootwrap.conf; then
|
||||||
sudo cp -p $QUANTUM_DIR/etc/quantum/rootwrap.conf $Q_RR_CONF_FILE
|
sudo cp -p $NEUTRON_DIR/etc/neutron/rootwrap.conf $Q_RR_CONF_FILE
|
||||||
else
|
else
|
||||||
sudo cp -p $QUANTUM_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE
|
sudo cp -p $NEUTRON_DIR/etc/rootwrap.conf $Q_RR_CONF_FILE
|
||||||
fi
|
fi
|
||||||
sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE
|
sudo sed -e "s:^filters_path=.*$:filters_path=$Q_CONF_ROOTWRAP_D:" -i $Q_RR_CONF_FILE
|
||||||
sudo chown root:root $Q_RR_CONF_FILE
|
sudo chown root:root $Q_RR_CONF_FILE
|
||||||
sudo chmod 0644 $Q_RR_CONF_FILE
|
sudo chmod 0644 $Q_RR_CONF_FILE
|
||||||
# Specify ``rootwrap.conf`` as first parameter to quantum-rootwrap
|
# Specify ``rootwrap.conf`` as first parameter to neutron-rootwrap
|
||||||
ROOTWRAP_SUDOER_CMD="$QUANTUM_ROOTWRAP $Q_RR_CONF_FILE *"
|
ROOTWRAP_SUDOER_CMD="$NEUTRON_ROOTWRAP $Q_RR_CONF_FILE *"
|
||||||
|
|
||||||
# Set up the rootwrap sudoers for quantum
|
# Set up the rootwrap sudoers for neutron
|
||||||
TEMPFILE=`mktemp`
|
TEMPFILE=`mktemp`
|
||||||
echo "$USER ALL=(root) NOPASSWD: $ROOTWRAP_SUDOER_CMD" >$TEMPFILE
|
echo "$USER ALL=(root) NOPASSWD: $ROOTWRAP_SUDOER_CMD" >$TEMPFILE
|
||||||
chmod 0440 $TEMPFILE
|
chmod 0440 $TEMPFILE
|
||||||
sudo chown root:root $TEMPFILE
|
sudo chown root:root $TEMPFILE
|
||||||
sudo mv $TEMPFILE /etc/sudoers.d/quantum-rootwrap
|
sudo mv $TEMPFILE /etc/sudoers.d/neutron-rootwrap
|
||||||
|
|
||||||
# Update the root_helper
|
# Update the root_helper
|
||||||
iniset $QUANTUM_CONF agent root_helper "$Q_RR_COMMAND"
|
iniset $NEUTRON_CONF agent root_helper "$Q_RR_COMMAND"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configures keystone integration for quantum service and agents
|
# Configures keystone integration for neutron service and agents
|
||||||
function _quantum_setup_keystone() {
|
function _neutron_setup_keystone() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
local section=$2
|
local section=$2
|
||||||
local use_auth_url=$3
|
local use_auth_url=$3
|
||||||
@ -669,58 +676,58 @@ function _quantum_setup_keystone() {
|
|||||||
iniset $conf_file $section admin_tenant_name $SERVICE_TENANT_NAME
|
iniset $conf_file $section admin_tenant_name $SERVICE_TENANT_NAME
|
||||||
iniset $conf_file $section admin_user $Q_ADMIN_USERNAME
|
iniset $conf_file $section admin_user $Q_ADMIN_USERNAME
|
||||||
iniset $conf_file $section admin_password $SERVICE_PASSWORD
|
iniset $conf_file $section admin_password $SERVICE_PASSWORD
|
||||||
iniset $conf_file $section signing_dir $QUANTUM_AUTH_CACHE_DIR
|
iniset $conf_file $section signing_dir $NEUTRON_AUTH_CACHE_DIR
|
||||||
# Create cache dir
|
# Create cache dir
|
||||||
sudo mkdir -p $QUANTUM_AUTH_CACHE_DIR
|
sudo mkdir -p $NEUTRON_AUTH_CACHE_DIR
|
||||||
sudo chown $STACK_USER $QUANTUM_AUTH_CACHE_DIR
|
sudo chown $STACK_USER $NEUTRON_AUTH_CACHE_DIR
|
||||||
rm -f $QUANTUM_AUTH_CACHE_DIR/*
|
rm -f $NEUTRON_AUTH_CACHE_DIR/*
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_setup_interface_driver() {
|
function _neutron_setup_interface_driver() {
|
||||||
|
|
||||||
# ovs_use_veth needs to be set before the plugin configuration
|
# ovs_use_veth needs to be set before the plugin configuration
|
||||||
# occurs to allow plugins to override the setting.
|
# occurs to allow plugins to override the setting.
|
||||||
iniset $1 DEFAULT ovs_use_veth $Q_OVS_USE_VETH
|
iniset $1 DEFAULT ovs_use_veth $Q_OVS_USE_VETH
|
||||||
|
|
||||||
quantum_plugin_setup_interface_driver $1
|
neutron_plugin_setup_interface_driver $1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Functions for Quantum Exercises
|
# Functions for Neutron Exercises
|
||||||
#--------------------------------
|
#--------------------------------
|
||||||
|
|
||||||
function delete_probe() {
|
function delete_probe() {
|
||||||
local from_net="$1"
|
local from_net="$1"
|
||||||
net_id=`_get_net_id $from_net`
|
net_id=`_get_net_id $from_net`
|
||||||
probe_id=`quantum-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-list -c id -c network_id | grep $net_id | awk '{print $2}'`
|
probe_id=`neutron-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-list -c id -c network_id | grep $net_id | awk '{print $2}'`
|
||||||
quantum-debug --os-tenant-name admin --os-username admin probe-delete $probe_id
|
neutron-debug --os-tenant-name admin --os-username admin probe-delete $probe_id
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_quantum_debug() {
|
function setup_neutron_debug() {
|
||||||
if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then
|
if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then
|
||||||
public_net_id=`_get_net_id $PUBLIC_NETWORK_NAME`
|
public_net_id=`_get_net_id $PUBLIC_NETWORK_NAME`
|
||||||
quantum-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-create --device-owner compute $public_net_id
|
neutron-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-create --device-owner compute $public_net_id
|
||||||
private_net_id=`_get_net_id $PRIVATE_NETWORK_NAME`
|
private_net_id=`_get_net_id $PRIVATE_NETWORK_NAME`
|
||||||
quantum-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-create --device-owner compute $private_net_id
|
neutron-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-create --device-owner compute $private_net_id
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown_quantum_debug() {
|
function teardown_neutron_debug() {
|
||||||
delete_probe $PUBLIC_NETWORK_NAME
|
delete_probe $PUBLIC_NETWORK_NAME
|
||||||
delete_probe $PRIVATE_NETWORK_NAME
|
delete_probe $PRIVATE_NETWORK_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
function _get_net_id() {
|
function _get_net_id() {
|
||||||
quantum --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD net-list | grep $1 | awk '{print $2}'
|
neutron --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD net-list | grep $1 | awk '{print $2}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function _get_probe_cmd_prefix() {
|
function _get_probe_cmd_prefix() {
|
||||||
local from_net="$1"
|
local from_net="$1"
|
||||||
net_id=`_get_net_id $from_net`
|
net_id=`_get_net_id $from_net`
|
||||||
probe_id=`quantum-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-list -c id -c network_id | grep $net_id | awk '{print $2}' | head -n 1`
|
probe_id=`neutron-debug --os-tenant-name admin --os-username admin --os-password $ADMIN_PASSWORD probe-list -c id -c network_id | grep $net_id | awk '{print $2}' | head -n 1`
|
||||||
echo "$Q_RR_COMMAND ip netns exec qprobe-$probe_id"
|
echo "$Q_RR_COMMAND ip netns exec qprobe-$probe_id"
|
||||||
}
|
}
|
||||||
|
|
||||||
function _ping_check_quantum() {
|
function _ping_check_neutron() {
|
||||||
local from_net=$1
|
local from_net=$1
|
||||||
local ip=$2
|
local ip=$2
|
||||||
local timeout_sec=$3
|
local timeout_sec=$3
|
||||||
@ -742,7 +749,7 @@ function _ping_check_quantum() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ssh check
|
# ssh check
|
||||||
function _ssh_check_quantum() {
|
function _ssh_check_neutron() {
|
||||||
local from_net=$1
|
local from_net=$1
|
||||||
local key_file=$2
|
local key_file=$2
|
||||||
local ip=$3
|
local ip=$3
|
||||||
@ -755,48 +762,48 @@ function _ssh_check_quantum() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Quantum 3rd party programs
|
# Neutron 3rd party programs
|
||||||
#---------------------------
|
#---------------------------
|
||||||
|
|
||||||
# please refer to ``lib/quantum_thirdparty/README.md`` for details
|
# please refer to ``lib/neutron_thirdparty/README.md`` for details
|
||||||
QUANTUM_THIRD_PARTIES=""
|
NEUTRON_THIRD_PARTIES=""
|
||||||
for f in $TOP_DIR/lib/quantum_thirdparty/*; do
|
for f in $TOP_DIR/lib/neutron_thirdparty/*; do
|
||||||
third_party=$(basename $f)
|
third_party=$(basename $f)
|
||||||
if is_service_enabled $third_party; then
|
if is_service_enabled $third_party; then
|
||||||
source $TOP_DIR/lib/quantum_thirdparty/$third_party
|
source $TOP_DIR/lib/neutron_thirdparty/$third_party
|
||||||
QUANTUM_THIRD_PARTIES="$QUANTUM_THIRD_PARTIES,$third_party"
|
NEUTRON_THIRD_PARTIES="$NEUTRON_THIRD_PARTIES,$third_party"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
function _quantum_third_party_do() {
|
function _neutron_third_party_do() {
|
||||||
for third_party in ${QUANTUM_THIRD_PARTIES//,/ }; do
|
for third_party in ${NEUTRON_THIRD_PARTIES//,/ }; do
|
||||||
${1}_${third_party}
|
${1}_${third_party}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# configure_quantum_third_party() - Set config files, create data dirs, etc
|
# configure_neutron_third_party() - Set config files, create data dirs, etc
|
||||||
function configure_quantum_third_party() {
|
function configure_neutron_third_party() {
|
||||||
_quantum_third_party_do configure
|
_neutron_third_party_do configure
|
||||||
}
|
}
|
||||||
|
|
||||||
# init_quantum_third_party() - Initialize databases, etc.
|
# init_neutron_third_party() - Initialize databases, etc.
|
||||||
function init_quantum_third_party() {
|
function init_neutron_third_party() {
|
||||||
_quantum_third_party_do init
|
_neutron_third_party_do init
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_quantum_third_party() - Collect source and prepare
|
# install_neutron_third_party() - Collect source and prepare
|
||||||
function install_quantum_third_party() {
|
function install_neutron_third_party() {
|
||||||
_quantum_third_party_do install
|
_neutron_third_party_do install
|
||||||
}
|
}
|
||||||
|
|
||||||
# start_quantum_third_party() - Start running processes, including screen
|
# start_neutron_third_party() - Start running processes, including screen
|
||||||
function start_quantum_third_party() {
|
function start_neutron_third_party() {
|
||||||
_quantum_third_party_do start
|
_neutron_third_party_do start
|
||||||
}
|
}
|
||||||
|
|
||||||
# stop_quantum_third_party - Stop running processes (non-screen)
|
# stop_neutron_third_party - Stop running processes (non-screen)
|
||||||
function stop_quantum_third_party() {
|
function stop_neutron_third_party() {
|
||||||
_quantum_third_party_do stop
|
_neutron_third_party_do stop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
38
lib/neutron_plugins/README.md
Normal file
38
lib/neutron_plugins/README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Neutron plugin specific files
|
||||||
|
=============================
|
||||||
|
Neutron plugins require plugin specific behavior.
|
||||||
|
The files under the directory, ``lib/neutron_plugins/``, will be used
|
||||||
|
when their service is enabled.
|
||||||
|
Each plugin has ``lib/neutron_plugins/$Q_PLUGIN`` and define the following
|
||||||
|
functions.
|
||||||
|
Plugin specific configuration variables should be in this file.
|
||||||
|
|
||||||
|
* filename: ``$Q_PLUGIN``
|
||||||
|
* The corresponding file name MUST be the same to plugin name ``$Q_PLUGIN``.
|
||||||
|
Plugin specific configuration variables should be in this file.
|
||||||
|
|
||||||
|
functions
|
||||||
|
---------
|
||||||
|
``lib/neutron`` calls the following functions when the ``$Q_PLUGIN`` is enabled
|
||||||
|
|
||||||
|
* ``neutron_plugin_create_nova_conf`` :
|
||||||
|
set ``NOVA_VIF_DRIVER`` and optionally set options in nova_conf
|
||||||
|
e.g.
|
||||||
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
||||||
|
* ``neutron_plugin_install_agent_packages`` :
|
||||||
|
install packages that is specific to plugin agent
|
||||||
|
e.g.
|
||||||
|
install_package bridge-utils
|
||||||
|
* ``neutron_plugin_configure_common`` :
|
||||||
|
set plugin-specific variables, ``Q_PLUGIN_CONF_PATH``, ``Q_PLUGIN_CONF_FILENAME``,
|
||||||
|
``Q_DB_NAME``, ``Q_PLUGIN_CLASS``
|
||||||
|
* ``neutron_plugin_configure_debug_command``
|
||||||
|
* ``neutron_plugin_configure_dhcp_agent``
|
||||||
|
* ``neutron_plugin_configure_l3_agent``
|
||||||
|
* ``neutron_plugin_configure_plugin_agent``
|
||||||
|
* ``neutron_plugin_configure_service``
|
||||||
|
* ``neutron_plugin_setup_interface_driver``
|
||||||
|
* ``has_neutron_plugin_security_group``:
|
||||||
|
return 0 if the plugin support neutron security group otherwise return 1
|
||||||
|
* ``neutron_plugin_check_adv_test_requirements``:
|
||||||
|
return 0 if requirements are satisfied otherwise return 1
|
74
lib/neutron_plugins/bigswitch_floodlight
Normal file
74
lib/neutron_plugins/bigswitch_floodlight
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
# Neuton Big Switch/FloodLight plugin
|
||||||
|
# ------------------------------------
|
||||||
|
|
||||||
|
# Save trace setting
|
||||||
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
|
set +o xtrace
|
||||||
|
|
||||||
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
source $TOP_DIR/lib/neutron_thirdparty/bigswitch_floodlight # for third party service specific configuration values
|
||||||
|
|
||||||
|
function neutron_plugin_create_nova_conf() {
|
||||||
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_install_agent_packages() {
|
||||||
|
_neutron_ovs_base_install_agent_packages
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_common() {
|
||||||
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/bigswitch
|
||||||
|
Q_PLUGIN_CONF_FILENAME=restproxy.ini
|
||||||
|
Q_DB_NAME="restproxy_neutron"
|
||||||
|
Q_PLUGIN_CLASS="neutron.plugins.bigswitch.plugin.NeutronRestProxyV2"
|
||||||
|
BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
|
||||||
|
BS_FL_CONTROLLER_TIMEOUT=${BS_FL_CONTROLLER_TIMEOUT:-10}
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_debug_command() {
|
||||||
|
_neutron_ovs_base_configure_debug_command
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_l3_agent() {
|
||||||
|
_neutron_ovs_base_configure_l3_agent
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_service() {
|
||||||
|
iniset /$Q_PLUGIN_CONF_FILE restproxy servers $BS_FL_CONTROLLERS_PORT
|
||||||
|
iniset /$Q_PLUGIN_CONF_FILE restproxy servertimeout $BS_FL_CONTROLLER_TIMEOUT
|
||||||
|
if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
|
||||||
|
then
|
||||||
|
iniset /$Q_PLUGIN_CONF_FILE nova vif_type ivs
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_setup_interface_driver() {
|
||||||
|
local conf_file=$1
|
||||||
|
if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
|
||||||
|
then
|
||||||
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.IVSInterfaceDriver
|
||||||
|
else
|
||||||
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function has_neutron_plugin_security_group() {
|
||||||
|
# 1 means False here
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Restore xtrace
|
||||||
|
$MY_XTRACE
|
59
lib/neutron_plugins/brocade
Normal file
59
lib/neutron_plugins/brocade
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Brocade Neutron Plugin
|
||||||
|
# ----------------------
|
||||||
|
|
||||||
|
# Save trace setting
|
||||||
|
BRCD_XTRACE=$(set +o | grep xtrace)
|
||||||
|
set +o xtrace
|
||||||
|
|
||||||
|
function is_neutron_ovs_base_plugin() {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_create_nova_conf() {
|
||||||
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_install_agent_packages() {
|
||||||
|
install_package bridge-utils
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_common() {
|
||||||
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/brocade
|
||||||
|
Q_PLUGIN_CONF_FILENAME=brocade.ini
|
||||||
|
Q_DB_NAME="brcd_neutron"
|
||||||
|
Q_PLUGIN_CLASS="neutron.plugins.brocade.NeutronPlugin.BrocadePluginV2"
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_debug_command() {
|
||||||
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
|
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager neutron.agent.dhcp_agent.DhcpAgentWithStateReport
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_l3_agent() {
|
||||||
|
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge
|
||||||
|
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager neutron.agent.l3_agent.L3NATAgentWithStateReport
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
|
AGENT_BINARY="$NEUTON_BIN_DIR/neutron-linuxbridge-agent"
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_setup_interface_driver() {
|
||||||
|
local conf_file=$1
|
||||||
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver
|
||||||
|
}
|
||||||
|
|
||||||
|
function has_neutron_plugin_security_group() {
|
||||||
|
# 0 means True here
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Restore xtrace
|
||||||
|
$BRCD_XTRACE
|
@ -1,4 +1,4 @@
|
|||||||
# Quantum Cisco plugin
|
# Neutron Cisco plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
@ -86,17 +86,17 @@ function _config_switch() {
|
|||||||
# Prefix openvswitch plugin routines with "ovs" in order to differentiate from
|
# Prefix openvswitch plugin routines with "ovs" in order to differentiate from
|
||||||
# cisco plugin routines. This means, ovs plugin routines will coexist with cisco
|
# cisco plugin routines. This means, ovs plugin routines will coexist with cisco
|
||||||
# plugin routines in this script.
|
# plugin routines in this script.
|
||||||
source $TOP_DIR/lib/quantum_plugins/openvswitch
|
source $TOP_DIR/lib/neutron_plugins/openvswitch
|
||||||
_prefix_function quantum_plugin_create_nova_conf ovs
|
_prefix_function neutron_plugin_create_nova_conf ovs
|
||||||
_prefix_function quantum_plugin_install_agent_packages ovs
|
_prefix_function neutron_plugin_install_agent_packages ovs
|
||||||
_prefix_function quantum_plugin_configure_common ovs
|
_prefix_function neutron_plugin_configure_common ovs
|
||||||
_prefix_function quantum_plugin_configure_debug_command ovs
|
_prefix_function neutron_plugin_configure_debug_command ovs
|
||||||
_prefix_function quantum_plugin_configure_dhcp_agent ovs
|
_prefix_function neutron_plugin_configure_dhcp_agent ovs
|
||||||
_prefix_function quantum_plugin_configure_l3_agent ovs
|
_prefix_function neutron_plugin_configure_l3_agent ovs
|
||||||
_prefix_function quantum_plugin_configure_plugin_agent ovs
|
_prefix_function neutron_plugin_configure_plugin_agent ovs
|
||||||
_prefix_function quantum_plugin_configure_service ovs
|
_prefix_function neutron_plugin_configure_service ovs
|
||||||
_prefix_function quantum_plugin_setup_interface_driver ovs
|
_prefix_function neutron_plugin_setup_interface_driver ovs
|
||||||
_prefix_function has_quantum_plugin_security_group ovs
|
_prefix_function has_neutron_plugin_security_group ovs
|
||||||
|
|
||||||
# Check the version of the installed ncclient package
|
# Check the version of the installed ncclient package
|
||||||
function check_ncclient_version() {
|
function check_ncclient_version() {
|
||||||
@ -144,66 +144,66 @@ function is_ncclient_installed() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_has_quantum_plugin_security_group
|
ovs_has_neutron_plugin_security_group
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function is_quantum_ovs_base_plugin() {
|
function is_neutron_ovs_base_plugin() {
|
||||||
# Cisco uses OVS if openvswitch subplugin is deployed
|
# Cisco uses OVS if openvswitch subplugin is deployed
|
||||||
_has_ovs_subplugin
|
_has_ovs_subplugin
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
# populate required nova configuration parameters
|
# populate required nova configuration parameters
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_create_nova_conf
|
ovs_neutron_plugin_create_nova_conf
|
||||||
else
|
else
|
||||||
_quantum_ovs_base_configure_nova_vif_driver
|
_neutron_ovs_base_configure_nova_vif_driver
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
function neutron_plugin_install_agent_packages() {
|
||||||
# Cisco plugin uses openvswitch to operate in one of its configurations
|
# Cisco plugin uses openvswitch to operate in one of its configurations
|
||||||
ovs_quantum_plugin_install_agent_packages
|
ovs_neutron_plugin_install_agent_packages
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configure common parameters
|
# Configure common parameters
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
# setup default subplugins
|
# setup default subplugins
|
||||||
if [ ! -v Q_CISCO_PLUGIN_SUBPLUGINS ]; then
|
if [ ! -v Q_CISCO_PLUGIN_SUBPLUGINS ]; then
|
||||||
declare -ga Q_CISCO_PLUGIN_SUBPLUGINS
|
declare -ga Q_CISCO_PLUGIN_SUBPLUGINS
|
||||||
Q_CISCO_PLUGIN_SUBPLUGINS=(openvswitch nexus)
|
Q_CISCO_PLUGIN_SUBPLUGINS=(openvswitch nexus)
|
||||||
fi
|
fi
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_configure_common
|
ovs_neutron_plugin_configure_common
|
||||||
Q_PLUGIN_EXTRA_CONF_PATH=etc/quantum/plugins/cisco
|
Q_PLUGIN_EXTRA_CONF_PATH=etc/neutron/plugins/cisco
|
||||||
Q_PLUGIN_EXTRA_CONF_FILES=(cisco_plugins.ini)
|
Q_PLUGIN_EXTRA_CONF_FILES=(cisco_plugins.ini)
|
||||||
else
|
else
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/cisco
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/cisco
|
||||||
Q_PLUGIN_CONF_FILENAME=cisco_plugins.ini
|
Q_PLUGIN_CONF_FILENAME=cisco_plugins.ini
|
||||||
fi
|
fi
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.cisco.network_plugin.PluginV2"
|
Q_PLUGIN_CLASS="neutron.plugins.cisco.network_plugin.PluginV2"
|
||||||
Q_DB_NAME=cisco_quantum
|
Q_DB_NAME=cisco_neutron
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_configure_debug_command
|
ovs_neutron_plugin_configure_debug_command
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager quantum.agent.dhcp_agent.DhcpAgentWithStateReport
|
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager neutron.agent.dhcp_agent.DhcpAgentWithStateReport
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
function neutron_plugin_configure_l3_agent() {
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_configure_l3_agent
|
ovs_neutron_plugin_configure_l3_agent
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ function _configure_nexus_subplugin() {
|
|||||||
HOST_NAME=$(hostname)
|
HOST_NAME=$(hostname)
|
||||||
Q_CISCO_PLUGIN_SWITCH_INFO=([1.1.1.1]=stack:stack:22:${HOST_NAME}:1/10)
|
Q_CISCO_PLUGIN_SWITCH_INFO=([1.1.1.1]=stack:stack:22:${HOST_NAME}:1/10)
|
||||||
else
|
else
|
||||||
iniset $cisco_cfg_file CISCO nexus_driver quantum.plugins.cisco.nexus.cisco_nexus_network_driver_v2.CiscoNEXUSDriver
|
iniset $cisco_cfg_file CISCO nexus_driver neutron.plugins.cisco.nexus.cisco_nexus_network_driver_v2.CiscoNEXUSDriver
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setup the switch configurations
|
# Setup the switch configurations
|
||||||
@ -267,21 +267,21 @@ function _configure_n1kv_subplugin() {
|
|||||||
|
|
||||||
# Setup the integration bridge by calling the ovs_base
|
# Setup the integration bridge by calling the ovs_base
|
||||||
OVS_BRIDGE=$Q_CISCO_PLUGIN_INTEGRATION_BRIDGE
|
OVS_BRIDGE=$Q_CISCO_PLUGIN_INTEGRATION_BRIDGE
|
||||||
_quantum_ovs_base_setup_bridge $OVS_BRIDGE
|
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_configure_plugin_agent
|
ovs_neutron_plugin_configure_plugin_agent
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
local subplugin
|
local subplugin
|
||||||
local cisco_cfg_file
|
local cisco_cfg_file
|
||||||
|
|
||||||
if _has_ovs_subplugin; then
|
if _has_ovs_subplugin; then
|
||||||
ovs_quantum_plugin_configure_service
|
ovs_neutron_plugin_configure_service
|
||||||
cisco_cfg_file=/${Q_PLUGIN_EXTRA_CONF_FILES[0]}
|
cisco_cfg_file=/${Q_PLUGIN_EXTRA_CONF_FILES[0]}
|
||||||
else
|
else
|
||||||
cisco_cfg_file=/$Q_PLUGIN_CONF_FILE
|
cisco_cfg_file=/$Q_PLUGIN_CONF_FILE
|
||||||
@ -302,9 +302,9 @@ function quantum_plugin_configure_service() {
|
|||||||
inicomment $cisco_cfg_file CISCO_TEST host
|
inicomment $cisco_cfg_file CISCO_TEST host
|
||||||
for subplugin in ${Q_CISCO_PLUGIN_SUBPLUGINS[@]}; do
|
for subplugin in ${Q_CISCO_PLUGIN_SUBPLUGINS[@]}; do
|
||||||
case $subplugin in
|
case $subplugin in
|
||||||
nexus) iniset $cisco_cfg_file CISCO_PLUGINS nexus_plugin quantum.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin;;
|
nexus) iniset $cisco_cfg_file CISCO_PLUGINS nexus_plugin neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin;;
|
||||||
openvswitch) iniset $cisco_cfg_file CISCO_PLUGINS vswitch_plugin quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2;;
|
openvswitch) iniset $cisco_cfg_file CISCO_PLUGINS vswitch_plugin neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2;;
|
||||||
n1kv) iniset $cisco_cfg_file CISCO_PLUGINS vswitch_plugin quantum.plugins.cisco.n1kv.n1kv_quantum_plugin.N1kvQuantumPluginV2;;
|
n1kv) iniset $cisco_cfg_file CISCO_PLUGINS vswitch_plugin neutron.plugins.cisco.n1kv.n1kv_neutron_plugin.N1kvNeutronPluginV2;;
|
||||||
*) die $LINENO "Unsupported cisco subplugin: $subplugin";;
|
*) die $LINENO "Unsupported cisco subplugin: $subplugin";;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@ -318,9 +318,9 @@ function quantum_plugin_configure_service() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
}
|
}
|
||||||
|
|
||||||
# Restore xtrace
|
# Restore xtrace
|
@ -1,18 +1,18 @@
|
|||||||
# Quantum Linux Bridge plugin
|
# Neutron Linux Bridge plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
MY_XTRACE=$(set +o | grep xtrace)
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/linuxbridge
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/linuxbridge
|
||||||
Q_PLUGIN_CONF_FILENAME=linuxbridge_conf.ini
|
Q_PLUGIN_CONF_FILENAME=linuxbridge_conf.ini
|
||||||
Q_DB_NAME="quantum_linux_bridge"
|
Q_DB_NAME="neutron_linux_bridge"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.linuxbridge.lb_quantum_plugin.LinuxBridgePluginV2"
|
Q_PLUGIN_CLASS="neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
if [[ "$ENABLE_TENANT_VLANS" = "True" ]]; then
|
if [[ "$ENABLE_TENANT_VLANS" = "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE vlans tenant_network_type vlan
|
iniset /$Q_PLUGIN_CONF_FILE vlans tenant_network_type vlan
|
||||||
else
|
else
|
||||||
@ -31,9 +31,9 @@ function quantum_plugin_configure_service() {
|
|||||||
iniset /$Q_PLUGIN_CONF_FILE vlans network_vlan_ranges $LB_VLAN_RANGES
|
iniset /$Q_PLUGIN_CONF_FILE vlans network_vlan_ranges $LB_VLAN_RANGES
|
||||||
fi
|
fi
|
||||||
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.linux.iptables_firewall.IptablesFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
|
||||||
else
|
else
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.firewall.NoopFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Define extra "LINUX_BRIDGE" configuration options when q-svc is configured by defining
|
# Define extra "LINUX_BRIDGE" configuration options when q-svc is configured by defining
|
||||||
@ -45,7 +45,7 @@ function quantum_plugin_configure_service() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
# 0 means True here
|
# 0 means True here
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
@ -1,37 +1,37 @@
|
|||||||
# Quantum Linux Bridge L2 agent
|
# Neutron Linux Bridge L2 agent
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
PLUGIN_XTRACE=$(set +o | grep xtrace)
|
PLUGIN_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
function is_quantum_ovs_base_plugin() {
|
function is_neutron_ovs_base_plugin() {
|
||||||
# linuxbridge doesn't use OVS
|
# linuxbridge doesn't use OVS
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
function neutron_plugin_install_agent_packages() {
|
||||||
install_package bridge-utils
|
install_package bridge-utils
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT external_network_bridge
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager quantum.agent.dhcp_agent.DhcpAgentWithStateReport
|
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager neutron.agent.dhcp_agent.DhcpAgentWithStateReport
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
function neutron_plugin_configure_l3_agent() {
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge
|
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager quantum.agent.l3_agent.L3NATAgentWithStateReport
|
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager neutron.agent.l3_agent.L3NATAgentWithStateReport
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
# Setup physical network interface mappings. Override
|
# Setup physical network interface mappings. Override
|
||||||
# ``LB_VLAN_RANGES`` and ``LB_INTERFACE_MAPPINGS`` in ``localrc`` for more
|
# ``LB_VLAN_RANGES`` and ``LB_INTERFACE_MAPPINGS`` in ``localrc`` for more
|
||||||
# complex physical network configurations.
|
# complex physical network configurations.
|
||||||
@ -42,11 +42,11 @@ function quantum_plugin_configure_plugin_agent() {
|
|||||||
iniset /$Q_PLUGIN_CONF_FILE linux_bridge physical_interface_mappings $LB_INTERFACE_MAPPINGS
|
iniset /$Q_PLUGIN_CONF_FILE linux_bridge physical_interface_mappings $LB_INTERFACE_MAPPINGS
|
||||||
fi
|
fi
|
||||||
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.linux.iptables_firewall.IptablesFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
|
||||||
else
|
else
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.firewall.NoopFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
||||||
fi
|
fi
|
||||||
AGENT_BINARY="$QUANTUM_DIR/bin/quantum-linuxbridge-agent"
|
AGENT_BINARY="$NEUTRON_BIN_DIR/neutron-linuxbridge-agent"
|
||||||
# Define extra "AGENT" configuration options when q-agt is configured by defining
|
# Define extra "AGENT" configuration options when q-agt is configured by defining
|
||||||
# the array ``Q_AGENT_EXTRA_AGENT_OPTS``.
|
# the array ``Q_AGENT_EXTRA_AGENT_OPTS``.
|
||||||
# For Example: ``Q_AGENT_EXTRA_AGENT_OPTS=(foo=true bar=2)``
|
# For Example: ``Q_AGENT_EXTRA_AGENT_OPTS=(foo=true bar=2)``
|
||||||
@ -63,12 +63,12 @@ function quantum_plugin_configure_plugin_agent() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
# Quantum Modular Layer 2 plugin
|
# Neutron Modular Layer 2 plugin
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
@ -7,16 +7,16 @@ set +o xtrace
|
|||||||
|
|
||||||
# Default openvswitch L2 agent
|
# Default openvswitch L2 agent
|
||||||
Q_AGENT=${Q_AGENT:-openvswitch}
|
Q_AGENT=${Q_AGENT:-openvswitch}
|
||||||
source $TOP_DIR/lib/quantum_plugins/${Q_AGENT}_agent
|
source $TOP_DIR/lib/neutron_plugins/${Q_AGENT}_agent
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/ml2
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/ml2
|
||||||
Q_PLUGIN_CONF_FILENAME=ml2_conf.ini
|
Q_PLUGIN_CONF_FILENAME=ml2_conf.ini
|
||||||
Q_DB_NAME="quantum_ml2"
|
Q_DB_NAME="neutron_ml2"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.ml2.plugin.Ml2Plugin"
|
Q_PLUGIN_CLASS="neutron.plugins.ml2.plugin.Ml2Plugin"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
if [[ "$ENABLE_TENANT_TUNNELS" = "True" ]]; then
|
if [[ "$ENABLE_TENANT_TUNNELS" = "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ml2 tenant_network_types gre
|
iniset /$Q_PLUGIN_CONF_FILE ml2 tenant_network_types gre
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ml2_type_gre tunnel_id_ranges $TENANT_TUNNEL_RANGES
|
iniset /$Q_PLUGIN_CONF_FILE ml2_type_gre tunnel_id_ranges $TENANT_TUNNEL_RANGES
|
||||||
@ -40,21 +40,21 @@ function quantum_plugin_configure_service() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# REVISIT(rkukura): Setting firewall_driver here for
|
# REVISIT(rkukura): Setting firewall_driver here for
|
||||||
# quantum.agent.securitygroups_rpc.is_firewall_enabled() which is
|
# neutron.agent.securitygroups_rpc.is_firewall_enabled() which is
|
||||||
# used in the server, in case no L2 agent is configured on the
|
# used in the server, in case no L2 agent is configured on the
|
||||||
# server's node. If an L2 agent is configured, this will get
|
# server's node. If an L2 agent is configured, this will get
|
||||||
# overridden with the correct driver. The ml2 plugin should
|
# overridden with the correct driver. The ml2 plugin should
|
||||||
# instead use its own config variable to indicate whether security
|
# instead use its own config variable to indicate whether security
|
||||||
# groups is enabled, and that will need to be set here instead.
|
# groups is enabled, and that will need to be set here instead.
|
||||||
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.not.a.real.FirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver neutron.agent.not.a.real.FirewallDriver
|
||||||
else
|
else
|
||||||
iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver quantum.agent.firewall.NoopFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
# Quantum NEC OpenFlow plugin
|
# Neutron NEC OpenFlow plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
@ -20,47 +20,47 @@ OFC_RETRY_INTERVAL=${OFC_RETRY_INTERVAL:-1}
|
|||||||
# Main logic
|
# Main logic
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/ovs_base
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
_quantum_ovs_base_configure_nova_vif_driver
|
_neutron_ovs_base_configure_nova_vif_driver
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
function neutron_plugin_install_agent_packages() {
|
||||||
# SKIP_OVS_INSTALL is useful when we want to use Open vSwitch whose
|
# SKIP_OVS_INSTALL is useful when we want to use Open vSwitch whose
|
||||||
# version is different from the version provided by the distribution.
|
# version is different from the version provided by the distribution.
|
||||||
if [[ "$SKIP_OVS_INSTALL" = "True" ]]; then
|
if [[ "$SKIP_OVS_INSTALL" = "True" ]]; then
|
||||||
echo "You need to install Open vSwitch manually."
|
echo "You need to install Open vSwitch manually."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
_quantum_ovs_base_install_agent_packages
|
_neutron_ovs_base_install_agent_packages
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/nec
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/nec
|
||||||
Q_PLUGIN_CONF_FILENAME=nec.ini
|
Q_PLUGIN_CONF_FILENAME=nec.ini
|
||||||
Q_DB_NAME="quantum_nec"
|
Q_DB_NAME="neutron_nec"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.nec.nec_plugin.NECPluginV2"
|
Q_PLUGIN_CLASS="neutron.plugins.nec.nec_plugin.NECPluginV2"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
_quantum_ovs_base_configure_debug_command
|
_neutron_ovs_base_configure_debug_command
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
function neutron_plugin_configure_l3_agent() {
|
||||||
_quantum_ovs_base_configure_l3_agent
|
_neutron_ovs_base_configure_l3_agent
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
if [[ "$SKIP_OVS_BRIDGE_SETUP" = "True" ]]; then
|
if [[ "$SKIP_OVS_BRIDGE_SETUP" = "True" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
# Set up integration bridge
|
# Set up integration bridge
|
||||||
_quantum_ovs_base_setup_bridge $OVS_BRIDGE
|
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
|
||||||
sudo ovs-vsctl --no-wait set-controller $OVS_BRIDGE tcp:$OFC_OFP_HOST:$OFC_OFP_PORT
|
sudo ovs-vsctl --no-wait set-controller $OVS_BRIDGE tcp:$OFC_OFP_HOST:$OFC_OFP_PORT
|
||||||
# Generate datapath ID from HOST_IP
|
# Generate datapath ID from HOST_IP
|
||||||
local dpid=$(printf "0x%07d%03d%03d%03d\n" ${HOST_IP//./ })
|
local dpid=$(printf "0x%07d%03d%03d%03d\n" ${HOST_IP//./ })
|
||||||
@ -69,26 +69,26 @@ function quantum_plugin_configure_plugin_agent() {
|
|||||||
if [ -n "$OVS_INTERFACE" ]; then
|
if [ -n "$OVS_INTERFACE" ]; then
|
||||||
sudo ovs-vsctl --no-wait -- --may-exist add-port $OVS_BRIDGE $OVS_INTERFACE
|
sudo ovs-vsctl --no-wait -- --may-exist add-port $OVS_BRIDGE $OVS_INTERFACE
|
||||||
fi
|
fi
|
||||||
_quantum_setup_ovs_tunnels $OVS_BRIDGE
|
_neutron_setup_ovs_tunnels $OVS_BRIDGE
|
||||||
AGENT_BINARY="$QUANTUM_DIR/bin/quantum-nec-agent"
|
AGENT_BINARY="$NEUTRON_BIN_DIR/neutron-nec-agent"
|
||||||
|
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
iniset $QUANTUM_CONF DEFAULT api_extensions_path quantum/plugins/nec/extensions/
|
iniset $NEUTRON_CONF DEFAULT api_extensions_path neutron/plugins/nec/extensions/
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ofc host $OFC_API_HOST
|
iniset /$Q_PLUGIN_CONF_FILE ofc host $OFC_API_HOST
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ofc port $OFC_API_PORT
|
iniset /$Q_PLUGIN_CONF_FILE ofc port $OFC_API_PORT
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ofc driver $OFC_DRIVER
|
iniset /$Q_PLUGIN_CONF_FILE ofc driver $OFC_DRIVER
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ofc api_retry_max OFC_RETRY_MAX
|
iniset /$Q_PLUGIN_CONF_FILE ofc api_retry_max OFC_RETRY_MAX
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ofc api_retry_interval OFC_RETRY_INTERVAL
|
iniset /$Q_PLUGIN_CONF_FILE ofc api_retry_interval OFC_RETRY_INTERVAL
|
||||||
|
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
iniset $conf_file DEFAULT ovs_use_veth True
|
iniset $conf_file DEFAULT ovs_use_veth True
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ function quantum_plugin_setup_interface_driver() {
|
|||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Setup OVS tunnel manually
|
# Setup OVS tunnel manually
|
||||||
function _quantum_setup_ovs_tunnels() {
|
function _neutron_setup_ovs_tunnels() {
|
||||||
local bridge=$1
|
local bridge=$1
|
||||||
local id=0
|
local id=0
|
||||||
GRE_LOCAL_IP=${GRE_LOCAL_IP:-$HOST_IP}
|
GRE_LOCAL_IP=${GRE_LOCAL_IP:-$HOST_IP}
|
||||||
@ -113,12 +113,12 @@ function _quantum_setup_ovs_tunnels() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
# 0 means True here
|
# 0 means True here
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
}
|
}
|
||||||
|
|
@ -1,14 +1,14 @@
|
|||||||
# Quantum Nicira NVP plugin
|
# Neutron Nicira NVP plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
MY_XTRACE=$(set +o | grep xtrace)
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/ovs_base
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
|
||||||
function setup_integration_bridge() {
|
function setup_integration_bridge() {
|
||||||
_quantum_ovs_base_setup_bridge $OVS_BRIDGE
|
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
|
||||||
# Set manager to NVP controller (1st of list)
|
# Set manager to NVP controller (1st of list)
|
||||||
if [[ "$NVP_CONTROLLERS" != "" ]]; then
|
if [[ "$NVP_CONTROLLERS" != "" ]]; then
|
||||||
# Get the first controller
|
# Get the first controller
|
||||||
@ -20,12 +20,12 @@ function setup_integration_bridge() {
|
|||||||
sudo ovs-vsctl set-manager ssl:$OVS_MGR_IP
|
sudo ovs-vsctl set-manager ssl:$OVS_MGR_IP
|
||||||
}
|
}
|
||||||
|
|
||||||
function is_quantum_ovs_base_plugin() {
|
function is_neutron_ovs_base_plugin() {
|
||||||
# NVP uses OVS, but not the l3-agent
|
# NVP uses OVS, but not the l3-agent
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtOpenVswitchDriver"}
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtOpenVswitchDriver"}
|
||||||
# if n-cpu is enabled, then setup integration bridge
|
# if n-cpu is enabled, then setup integration bridge
|
||||||
if is_service_enabled n-cpu; then
|
if is_service_enabled n-cpu; then
|
||||||
@ -33,40 +33,40 @@ function quantum_plugin_create_nova_conf() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
function neutron_plugin_install_agent_packages() {
|
||||||
# Nicira Plugin does not run q-agt, but it currently needs dhcp and metadata agents
|
# Nicira Plugin does not run q-agt, but it currently needs dhcp and metadata agents
|
||||||
_quantum_ovs_base_install_agent_packages
|
_neutron_ovs_base_install_agent_packages
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/nicira
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/nicira
|
||||||
Q_PLUGIN_CONF_FILENAME=nvp.ini
|
Q_PLUGIN_CONF_FILENAME=nvp.ini
|
||||||
Q_DB_NAME="quantum_nvp"
|
Q_DB_NAME="neutron_nvp"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.nicira.nicira_nvp_plugin.QuantumPlugin.NvpPluginV2"
|
Q_PLUGIN_CLASS="neutron.plugins.nicira.nicira_nvp_plugin.NeutronPlugin.NvpPluginV2"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
|
sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
setup_integration_bridge
|
setup_integration_bridge
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT enable_isolated_metadata True
|
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 enable_metadata_network True
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT ovs_use_veth True
|
iniset $Q_DHCP_CONF_FILE DEFAULT ovs_use_veth True
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
function neutron_plugin_configure_l3_agent() {
|
||||||
# Nicira plugin does not run L3 agent
|
# Nicira plugin does not run L3 agent
|
||||||
die $LINENO "q-l3 should must not be executed with Nicira plugin!"
|
die $LINENO "q-l3 should must not be executed with Nicira plugin!"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
# Nicira plugin does not run L2 agent
|
# Nicira plugin does not run L2 agent
|
||||||
die $LINENO "q-agt must not be executed with Nicira plugin!"
|
die $LINENO "q-agt must not be executed with Nicira plugin!"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
if [[ "$MAX_LP_PER_BRIDGED_LS" != "" ]]; then
|
if [[ "$MAX_LP_PER_BRIDGED_LS" != "" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE nvp max_lp_per_bridged_ls $MAX_LP_PER_BRIDGED_LS
|
iniset /$Q_PLUGIN_CONF_FILE nvp max_lp_per_bridged_ls $MAX_LP_PER_BRIDGED_LS
|
||||||
fi
|
fi
|
||||||
@ -120,17 +120,17 @@ function quantum_plugin_configure_service() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
# 0 means True here
|
# 0 means True here
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
is_service_enabled q-dhcp && return 0
|
is_service_enabled q-dhcp && return 0
|
||||||
}
|
}
|
||||||
|
|
@ -1,20 +1,20 @@
|
|||||||
# Quantum Open vSwitch plugin
|
# Neutron Open vSwitch plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
MY_XTRACE=$(set +o | grep xtrace)
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/openvswitch_agent
|
source $TOP_DIR/lib/neutron_plugins/openvswitch_agent
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/openvswitch
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/openvswitch
|
||||||
Q_PLUGIN_CONF_FILENAME=ovs_quantum_plugin.ini
|
Q_PLUGIN_CONF_FILENAME=ovs_neutron_plugin.ini
|
||||||
Q_DB_NAME="ovs_quantum"
|
Q_DB_NAME="ovs_neutron"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2"
|
Q_PLUGIN_CLASS="neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
if [[ "$ENABLE_TENANT_TUNNELS" = "True" ]]; then
|
if [[ "$ENABLE_TENANT_TUNNELS" = "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ovs tenant_network_type gre
|
iniset /$Q_PLUGIN_CONF_FILE ovs tenant_network_type gre
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ovs tunnel_id_ranges $TENANT_TUNNEL_RANGES
|
iniset /$Q_PLUGIN_CONF_FILE ovs tunnel_id_ranges $TENANT_TUNNEL_RANGES
|
||||||
@ -41,7 +41,7 @@ function quantum_plugin_configure_service() {
|
|||||||
iniset /$Q_PLUGIN_CONF_FILE ovs enable_tunneling True
|
iniset /$Q_PLUGIN_CONF_FILE ovs enable_tunneling True
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
|
|
||||||
# Define extra "OVS" configuration options when q-svc is configured by defining
|
# Define extra "OVS" configuration options when q-svc is configured by defining
|
||||||
# the array ``Q_SRV_EXTRA_OPTS``.
|
# the array ``Q_SRV_EXTRA_OPTS``.
|
||||||
@ -52,7 +52,7 @@ function quantum_plugin_configure_service() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
function has_neutron_plugin_security_group() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
@ -1,43 +1,43 @@
|
|||||||
# Quantum Open vSwitch L2 agent
|
# Neutron Open vSwitch L2 agent
|
||||||
# -----------------------------
|
# -----------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
PLUGIN_XTRACE=$(set +o | grep xtrace)
|
PLUGIN_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/ovs_base
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
_quantum_ovs_base_configure_nova_vif_driver
|
_neutron_ovs_base_configure_nova_vif_driver
|
||||||
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
||||||
iniset $NOVA_CONF DEFAULT xenapi_vif_driver nova.virt.xenapi.vif.XenAPIOpenVswitchDriver
|
iniset $NOVA_CONF DEFAULT xenapi_vif_driver nova.virt.xenapi.vif.XenAPIOpenVswitchDriver
|
||||||
iniset $NOVA_CONF DEFAULT xenapi_ovs_integration_bridge $XEN_INTEGRATION_BRIDGE
|
iniset $NOVA_CONF DEFAULT xenapi_ovs_integration_bridge $XEN_INTEGRATION_BRIDGE
|
||||||
# Disable nova's firewall so that it does not conflict with quantum
|
# Disable nova's firewall so that it does not conflict with neutron
|
||||||
iniset $NOVA_CONF DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
|
iniset $NOVA_CONF DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
function neutron_plugin_install_agent_packages() {
|
||||||
_quantum_ovs_base_install_agent_packages
|
_neutron_ovs_base_install_agent_packages
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
_quantum_ovs_base_configure_debug_command
|
_neutron_ovs_base_configure_debug_command
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager quantum.agent.dhcp_agent.DhcpAgentWithStateReport
|
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager neutron.agent.dhcp_agent.DhcpAgentWithStateReport
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
function neutron_plugin_configure_l3_agent() {
|
||||||
_quantum_ovs_base_configure_l3_agent
|
_neutron_ovs_base_configure_l3_agent
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager quantum.agent.l3_agent.L3NATAgentWithStateReport
|
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager neutron.agent.l3_agent.L3NATAgentWithStateReport
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
# Setup integration bridge
|
# Setup integration bridge
|
||||||
_quantum_ovs_base_setup_bridge $OVS_BRIDGE
|
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
|
|
||||||
# Setup agent for tunneling
|
# Setup agent for tunneling
|
||||||
if [[ "$OVS_ENABLE_TUNNELING" = "True" ]]; then
|
if [[ "$OVS_ENABLE_TUNNELING" = "True" ]]; then
|
||||||
@ -63,14 +63,14 @@ function quantum_plugin_configure_plugin_agent() {
|
|||||||
if [[ "$OVS_BRIDGE_MAPPINGS" != "" ]]; then
|
if [[ "$OVS_BRIDGE_MAPPINGS" != "" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS
|
iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS
|
||||||
fi
|
fi
|
||||||
AGENT_BINARY="$QUANTUM_DIR/bin/quantum-openvswitch-agent"
|
AGENT_BINARY="$NEUTRON_BIN_DIR/neutron-openvswitch-agent"
|
||||||
|
|
||||||
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
||||||
# Make a copy of our config for domU
|
# Make a copy of our config for domU
|
||||||
sudo cp /$Q_PLUGIN_CONF_FILE "/$Q_PLUGIN_CONF_FILE.domu"
|
sudo cp /$Q_PLUGIN_CONF_FILE "/$Q_PLUGIN_CONF_FILE.domu"
|
||||||
|
|
||||||
# Deal with Dom0's L2 Agent:
|
# Deal with Dom0's L2 Agent:
|
||||||
Q_RR_DOM0_COMMAND="$QUANTUM_DIR/bin/quantum-rootwrap-xen-dom0 $Q_RR_CONF_FILE"
|
Q_RR_DOM0_COMMAND="$NEUTRON_BIN_DIR/neutron-rootwrap-xen-dom0 $Q_RR_CONF_FILE"
|
||||||
|
|
||||||
# For now, duplicate the xen configuration already found in nova.conf
|
# For now, duplicate the xen configuration already found in nova.conf
|
||||||
iniset $Q_RR_CONF_FILE xenapi xenapi_connection_url "$XENAPI_CONNECTION_URL"
|
iniset $Q_RR_CONF_FILE xenapi xenapi_connection_url "$XENAPI_CONNECTION_URL"
|
||||||
@ -118,12 +118,12 @@ function quantum_plugin_configure_plugin_agent() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
local conf_file=$1
|
local conf_file=$1
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
}
|
}
|
||||||
|
|
@ -8,34 +8,34 @@ set +o xtrace
|
|||||||
OVS_BRIDGE=${OVS_BRIDGE:-br-int}
|
OVS_BRIDGE=${OVS_BRIDGE:-br-int}
|
||||||
PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex}
|
PUBLIC_BRIDGE=${PUBLIC_BRIDGE:-br-ex}
|
||||||
|
|
||||||
function is_quantum_ovs_base_plugin() {
|
function is_neutron_ovs_base_plugin() {
|
||||||
# Yes, we use OVS.
|
# Yes, we use OVS.
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_setup_bridge() {
|
function _neutron_ovs_base_setup_bridge() {
|
||||||
local bridge=$1
|
local bridge=$1
|
||||||
quantum-ovs-cleanup
|
neutron-ovs-cleanup
|
||||||
sudo ovs-vsctl --no-wait -- --may-exist add-br $bridge
|
sudo ovs-vsctl --no-wait -- --may-exist add-br $bridge
|
||||||
sudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge
|
sudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_ovs_base_cleanup() {
|
function neutron_ovs_base_cleanup() {
|
||||||
# remove all OVS ports that look like Quantum created ports
|
# remove all OVS ports that look like Neutron created ports
|
||||||
for port in $(sudo ovs-vsctl list port | grep -o -e tap[0-9a-f\-]* -e q[rg]-[0-9a-f\-]*); do
|
for port in $(sudo ovs-vsctl list port | grep -o -e tap[0-9a-f\-]* -e q[rg]-[0-9a-f\-]*); do
|
||||||
sudo ovs-vsctl del-port ${port}
|
sudo ovs-vsctl del-port ${port}
|
||||||
done
|
done
|
||||||
|
|
||||||
# remove all OVS bridges created by Quantum
|
# remove all OVS bridges created by Neutron
|
||||||
for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE}); do
|
for bridge in $(sudo ovs-vsctl list-br | grep -o -e ${OVS_BRIDGE} -e ${PUBLIC_BRIDGE}); do
|
||||||
sudo ovs-vsctl del-br ${bridge}
|
sudo ovs-vsctl del-br ${bridge}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_install_agent_packages() {
|
function _neutron_ovs_base_install_agent_packages() {
|
||||||
local kernel_version
|
local kernel_version
|
||||||
# Install deps
|
# Install deps
|
||||||
# FIXME add to ``files/apts/quantum``, but don't install if not needed!
|
# FIXME add to ``files/apts/neutron``, but don't install if not needed!
|
||||||
if is_ubuntu; then
|
if is_ubuntu; then
|
||||||
kernel_version=`cat /proc/version | cut -d " " -f3`
|
kernel_version=`cat /proc/version | cut -d " " -f3`
|
||||||
install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version
|
install_package make fakeroot dkms openvswitch-switch openvswitch-datapath-dkms linux-headers-$kernel_version
|
||||||
@ -50,29 +50,29 @@ function _quantum_ovs_base_install_agent_packages() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_configure_debug_command() {
|
function _neutron_ovs_base_configure_debug_command() {
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_configure_firewall_driver() {
|
function _neutron_ovs_base_configure_firewall_driver() {
|
||||||
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
|
||||||
else
|
else
|
||||||
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver quantum.agent.firewall.NoopFirewallDriver
|
iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_configure_l3_agent() {
|
function _neutron_ovs_base_configure_l3_agent() {
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge $PUBLIC_BRIDGE
|
||||||
|
|
||||||
quantum-ovs-cleanup
|
neutron-ovs-cleanup
|
||||||
sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
|
sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
|
||||||
# ensure no IP is configured on the public bridge
|
# ensure no IP is configured on the public bridge
|
||||||
sudo ip addr flush dev $PUBLIC_BRIDGE
|
sudo ip addr flush dev $PUBLIC_BRIDGE
|
||||||
}
|
}
|
||||||
|
|
||||||
function _quantum_ovs_base_configure_nova_vif_driver() {
|
function _neutron_ovs_base_configure_nova_vif_driver() {
|
||||||
# The hybrid VIF driver needs to be specified when Quantum Security Group
|
# The hybrid VIF driver needs to be specified when Neutron Security Group
|
||||||
# is enabled (until vif_security attributes are supported in VIF extension)
|
# is enabled (until vif_security attributes are supported in VIF extension)
|
||||||
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"}
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver"}
|
@ -1,4 +1,4 @@
|
|||||||
# PLUMgrid Quantum Plugin
|
# PLUMgrid Neutron Plugin
|
||||||
# Edgar Magana emagana@plumgrid.com
|
# Edgar Magana emagana@plumgrid.com
|
||||||
# ------------------------------------
|
# ------------------------------------
|
||||||
|
|
||||||
@ -6,36 +6,36 @@
|
|||||||
MY_XTRACE=$(set +o | grep xtrace)
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
#source $TOP_DIR/lib/quantum_plugins/ovs_base
|
#source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
function neutron_plugin_create_nova_conf() {
|
||||||
|
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
function neutron_plugin_setup_interface_driver() {
|
||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
function neutron_plugin_configure_common() {
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/plumgrid
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/plumgrid
|
||||||
Q_PLUGIN_CONF_FILENAME=plumgrid.ini
|
Q_PLUGIN_CONF_FILENAME=plumgrid.ini
|
||||||
Q_DB_NAME="plumgrid_quantum"
|
Q_DB_NAME="plumgrid_neutron"
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.plumgrid.plumgrid_nos_plugin.plumgrid_plugin.QuantumPluginPLUMgridV2"
|
Q_PLUGIN_CLASS="neutron.plugins.plumgrid.plumgrid_nos_plugin.plumgrid_plugin.NeutronPluginPLUMgridV2"
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
function neutron_plugin_configure_service() {
|
||||||
PLUMGRID_NOS_IP=${PLUMGRID_NOS_IP:-localhost}
|
PLUMGRID_NOS_IP=${PLUMGRID_NOS_IP:-localhost}
|
||||||
PLUMGRID_NOS_PORT=${PLUMGRID_NOS_PORT:-7766}
|
PLUMGRID_NOS_PORT=${PLUMGRID_NOS_PORT:-7766}
|
||||||
iniset /$Q_PLUGIN_CONF_FILE plumgridnos nos_server $PLUMGRID_NOS_IP
|
iniset /$Q_PLUGIN_CONF_FILE plumgridnos nos_server $PLUMGRID_NOS_IP
|
||||||
iniset /$Q_PLUGIN_CONF_FILE plumgridnos nos_server_port $PLUMGRID_NOS_PORT
|
iniset /$Q_PLUGIN_CONF_FILE plumgridnos nos_server_port $PLUMGRID_NOS_PORT
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
function neutron_plugin_configure_debug_command() {
|
||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
}
|
}
|
||||||
# Restore xtrace
|
# Restore xtrace
|
80
lib/neutron_plugins/ryu
Normal file
80
lib/neutron_plugins/ryu
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Neutron Ryu plugin
|
||||||
|
# ------------------
|
||||||
|
|
||||||
|
# Save trace setting
|
||||||
|
MY_XTRACE=$(set +o | grep xtrace)
|
||||||
|
set +o xtrace
|
||||||
|
|
||||||
|
source $TOP_DIR/lib/neutron_plugins/ovs_base
|
||||||
|
source $TOP_DIR/lib/neutron_thirdparty/ryu # for configuration value
|
||||||
|
|
||||||
|
function neutron_plugin_create_nova_conf() {
|
||||||
|
_neutron_ovs_base_configure_nova_vif_driver
|
||||||
|
iniset $NOVA_CONF DEFAULT libvirt_ovs_integration_bridge "$OVS_BRIDGE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_install_agent_packages() {
|
||||||
|
_neutron_ovs_base_install_agent_packages
|
||||||
|
|
||||||
|
# neutron_ryu_agent requires ryu module
|
||||||
|
install_package $(get_packages "ryu")
|
||||||
|
install_ryu
|
||||||
|
configure_ryu
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_common() {
|
||||||
|
Q_PLUGIN_CONF_PATH=etc/neutron/plugins/ryu
|
||||||
|
Q_PLUGIN_CONF_FILENAME=ryu.ini
|
||||||
|
Q_DB_NAME="ovs_neutron"
|
||||||
|
Q_PLUGIN_CLASS="neutron.plugins.ryu.ryu_neutron_plugin.RyuNeutronPluginV2"
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_debug_command() {
|
||||||
|
_neutron_ovs_base_configure_debug_command
|
||||||
|
iniset $NEUTRON_TEST_CONFIG_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_dhcp_agent() {
|
||||||
|
iniset $Q_DHCP_CONF_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_l3_agent() {
|
||||||
|
iniset $Q_L3_CONF_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
||||||
|
_neutron_ovs_base_configure_l3_agent
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_plugin_agent() {
|
||||||
|
# Set up integration bridge
|
||||||
|
_neutron_ovs_base_setup_bridge $OVS_BRIDGE
|
||||||
|
if [ -n "$RYU_INTERNAL_INTERFACE" ]; then
|
||||||
|
sudo ovs-vsctl --no-wait -- --may-exist add-port $OVS_BRIDGE $RYU_INTERNAL_INTERFACE
|
||||||
|
fi
|
||||||
|
iniset /$Q_PLUGIN_CONF_FILE ovs integration_bridge $OVS_BRIDGE
|
||||||
|
AGENT_BINARY="$NEUTRON_DIR/neutron/plugins/ryu/agent/ryu_neutron_agent.py"
|
||||||
|
|
||||||
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_configure_service() {
|
||||||
|
iniset /$Q_PLUGIN_CONF_FILE ovs openflow_rest_api $RYU_API_HOST:$RYU_API_PORT
|
||||||
|
|
||||||
|
_neutron_ovs_base_configure_firewall_driver
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_setup_interface_driver() {
|
||||||
|
local conf_file=$1
|
||||||
|
iniset $conf_file DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver
|
||||||
|
iniset $conf_file DEFAULT ovs_use_veth True
|
||||||
|
}
|
||||||
|
|
||||||
|
function has_neutron_plugin_security_group() {
|
||||||
|
# 0 means True here
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function neutron_plugin_check_adv_test_requirements() {
|
||||||
|
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Restore xtrace
|
||||||
|
$MY_XTRACE
|
@ -1,4 +1,4 @@
|
|||||||
# Quantum loadbalancer plugin
|
# Neutron loadbalancer plugin
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
|
|
||||||
# Save trace setting
|
# Save trace setting
|
||||||
@ -6,10 +6,10 @@ MY_XTRACE=$(set +o | grep xtrace)
|
|||||||
set +o xtrace
|
set +o xtrace
|
||||||
|
|
||||||
|
|
||||||
AGENT_LBAAS_BINARY="$QUANTUM_DIR/bin/quantum-lbaas-agent"
|
AGENT_LBAAS_BINARY="$NEUTRON_BIN_DIR/neutron-lbaas-agent"
|
||||||
LBAAS_PLUGIN=quantum.services.loadbalancer.plugin.LoadBalancerPlugin
|
LBAAS_PLUGIN=neutron.services.loadbalancer.plugin.LoadBalancerPlugin
|
||||||
|
|
||||||
function quantum_agent_lbaas_install_agent_packages() {
|
function neutron_agent_lbaas_install_agent_packages() {
|
||||||
if is_ubuntu || is_fedora; then
|
if is_ubuntu || is_fedora; then
|
||||||
install_package haproxy
|
install_package haproxy
|
||||||
elif is_suse; then
|
elif is_suse; then
|
||||||
@ -18,7 +18,7 @@ function quantum_agent_lbaas_install_agent_packages() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_agent_lbaas_configure_common() {
|
function neutron_agent_lbaas_configure_common() {
|
||||||
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then
|
if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then
|
||||||
Q_SERVICE_PLUGIN_CLASSES=$LBAAS_PLUGIN
|
Q_SERVICE_PLUGIN_CLASSES=$LBAAS_PLUGIN
|
||||||
else
|
else
|
||||||
@ -26,20 +26,20 @@ function quantum_agent_lbaas_configure_common() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function quantum_agent_lbaas_configure_agent() {
|
function neutron_agent_lbaas_configure_agent() {
|
||||||
LBAAS_AGENT_CONF_PATH=/etc/quantum/services/loadbalancer/haproxy
|
LBAAS_AGENT_CONF_PATH=/etc/neutron/services/loadbalancer/haproxy
|
||||||
mkdir -p $LBAAS_AGENT_CONF_PATH
|
mkdir -p $LBAAS_AGENT_CONF_PATH
|
||||||
|
|
||||||
LBAAS_AGENT_CONF_FILENAME="$LBAAS_AGENT_CONF_PATH/lbaas_agent.ini"
|
LBAAS_AGENT_CONF_FILENAME="$LBAAS_AGENT_CONF_PATH/lbaas_agent.ini"
|
||||||
|
|
||||||
cp $QUANTUM_DIR/etc/lbaas_agent.ini $LBAAS_AGENT_CONF_FILENAME
|
cp $NEUTRON_DIR/etc/lbaas_agent.ini $LBAAS_AGENT_CONF_FILENAME
|
||||||
|
|
||||||
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT use_namespaces $Q_USE_NAMESPACE
|
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT use_namespaces $Q_USE_NAMESPACE
|
||||||
# ovs_use_veth needs to be set before the plugin configuration
|
# ovs_use_veth needs to be set before the plugin configuration
|
||||||
# occurs to allow plugins to override the setting.
|
# occurs to allow plugins to override the setting.
|
||||||
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT ovs_use_veth $Q_OVS_USE_VETH
|
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT ovs_use_veth $Q_OVS_USE_VETH
|
||||||
|
|
||||||
quantum_plugin_setup_interface_driver $LBAAS_AGENT_CONF_FILENAME
|
neutron_plugin_setup_interface_driver $LBAAS_AGENT_CONF_FILENAME
|
||||||
|
|
||||||
if is_fedora; then
|
if is_fedora; then
|
||||||
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT user_group "nobody"
|
iniset $LBAAS_AGENT_CONF_FILENAME DEFAULT user_group "nobody"
|
@ -1,7 +1,7 @@
|
|||||||
Quantum third party specific files
|
Neutron third party specific files
|
||||||
==================================
|
==================================
|
||||||
Some Quantum plugins require third party programs to function.
|
Some Neutron plugins require third party programs to function.
|
||||||
The files under the directory, ``lib/quantum_thirdparty/``, will be used
|
The files under the directory, ``lib/neutron_thirdparty/``, will be used
|
||||||
when their service are enabled.
|
when their service are enabled.
|
||||||
Third party program specific configuration variables should be in this file.
|
Third party program specific configuration variables should be in this file.
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ Third party program specific configuration variables should be in this file.
|
|||||||
|
|
||||||
functions
|
functions
|
||||||
---------
|
---------
|
||||||
``lib/quantum`` calls the following functions when the ``<third_party>`` is enabled
|
``lib/neutron`` calls the following functions when the ``<third_party>`` is enabled
|
||||||
|
|
||||||
functions to be implemented
|
functions to be implemented
|
||||||
* ``configure_<third_party>``:
|
* ``configure_<third_party>``:
|
@ -13,7 +13,7 @@ function configure_bigswitch_floodlight() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function init_bigswitch_floodlight() {
|
function init_bigswitch_floodlight() {
|
||||||
install_quantum_agent_packages
|
install_neutron_agent_packages
|
||||||
|
|
||||||
echo -n "Installing OVS managed by the openflow controllers:"
|
echo -n "Installing OVS managed by the openflow controllers:"
|
||||||
echo ${BS_FL_CONTROLLERS_PORT}
|
echo ${BS_FL_CONTROLLERS_PORT}
|
@ -18,8 +18,8 @@ RYU_OFP_PORT=${RYU_OFP_PORT:-6633}
|
|||||||
# Ryu Applications
|
# Ryu Applications
|
||||||
RYU_APPS=${RYU_APPS:-ryu.app.simple_isolation,ryu.app.rest}
|
RYU_APPS=${RYU_APPS:-ryu.app.simple_isolation,ryu.app.rest}
|
||||||
|
|
||||||
# configure_ryu can be called multiple times as quantum_pluing/ryu may call
|
# configure_ryu can be called multiple times as neutron_pluing/ryu may call
|
||||||
# this function for quantum-ryu-agent
|
# this function for neutron-ryu-agent
|
||||||
_RYU_CONFIGURED=${_RYU_CONFIGURED:-False}
|
_RYU_CONFIGURED=${_RYU_CONFIGURED:-False}
|
||||||
function configure_ryu() {
|
function configure_ryu() {
|
||||||
if [[ "$_RYU_CONFIGURED" == "False" ]]; then
|
if [[ "$_RYU_CONFIGURED" == "False" ]]; then
|
||||||
@ -44,19 +44,19 @@ wsapi_host=$RYU_API_HOST
|
|||||||
wsapi_port=$RYU_API_PORT
|
wsapi_port=$RYU_API_PORT
|
||||||
ofp_listen_host=$RYU_OFP_HOST
|
ofp_listen_host=$RYU_OFP_HOST
|
||||||
ofp_tcp_listen_port=$RYU_OFP_PORT
|
ofp_tcp_listen_port=$RYU_OFP_PORT
|
||||||
quantum_url=http://$Q_HOST:$Q_PORT
|
neutron_url=http://$Q_HOST:$Q_PORT
|
||||||
quantum_admin_username=$Q_ADMIN_USERNAME
|
neutron_admin_username=$Q_ADMIN_USERNAME
|
||||||
quantum_admin_password=$SERVICE_PASSWORD
|
neutron_admin_password=$SERVICE_PASSWORD
|
||||||
quantum_admin_tenant_name=$SERVICE_TENANT_NAME
|
neutron_admin_tenant_name=$SERVICE_TENANT_NAME
|
||||||
quantum_admin_auth_url=$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/v2.0
|
neutron_admin_auth_url=$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/v2.0
|
||||||
quantum_auth_strategy=$Q_AUTH_STRATEGY
|
neutron_auth_strategy=$Q_AUTH_STRATEGY
|
||||||
quantum_controller_addr=tcp:$RYU_OFP_HOST:$RYU_OFP_PORT
|
neutron_controller_addr=tcp:$RYU_OFP_HOST:$RYU_OFP_PORT
|
||||||
"}
|
"}
|
||||||
echo "${RYU_CONF_CONTENTS}" > $RYU_CONF
|
echo "${RYU_CONF_CONTENTS}" > $RYU_CONF
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_ryu can be called multiple times as quantum_pluing/ryu may call
|
# install_ryu can be called multiple times as neutron_pluing/ryu may call
|
||||||
# this function for quantum-ryu-agent
|
# this function for neutron-ryu-agent
|
||||||
# Make this function idempotent and avoid cloning same repo many times
|
# Make this function idempotent and avoid cloning same repo many times
|
||||||
# with RECLONE=yes
|
# with RECLONE=yes
|
||||||
_RYU_INSTALLED=${_RYU_INSTALLED:-False}
|
_RYU_INSTALLED=${_RYU_INSTALLED:-False}
|
4
lib/nova
4
lib/nova
@ -81,7 +81,7 @@ if [ "$VIRT_DRIVER" = 'xenserver' ]; then
|
|||||||
GUEST_INTERFACE_DEFAULT=eth1
|
GUEST_INTERFACE_DEFAULT=eth1
|
||||||
# Allow ``build_domU.sh`` to specify the flat network bridge via kernel args
|
# 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)
|
FLAT_NETWORK_BRIDGE_DEFAULT=$(sed -e 's/.* flat_network_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline)
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
XEN_INTEGRATION_BRIDGE=$(sed -e 's/.* xen_integration_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline)
|
XEN_INTEGRATION_BRIDGE=$(sed -e 's/.* xen_integration_bridge=\([[:alnum:]]*\).*$/\1/g' /proc/cmdline)
|
||||||
fi
|
fi
|
||||||
elif [ "$VIRT_DRIVER" = 'baremetal' ]; then
|
elif [ "$VIRT_DRIVER" = 'baremetal' ]; then
|
||||||
@ -281,7 +281,7 @@ function configure_nova() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
|
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
|
||||||
if is_service_enabled quantum && is_quantum_ovs_base_plugin && ! sudo grep -q '^cgroup_device_acl' $QEMU_CONF; 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
|
# Add /dev/net/tun to cgroup_device_acls, needed for type=ethernet interfaces
|
||||||
cat <<EOF | sudo tee -a $QEMU_CONF
|
cat <<EOF | sudo tee -a $QEMU_CONF
|
||||||
cgroup_device_acl = [
|
cgroup_device_acl = [
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
Quantum plugin specific files
|
|
||||||
=============================
|
|
||||||
Quantum plugins require plugin specific behavior.
|
|
||||||
The files under the directory, ``lib/quantum_plugins/``, will be used
|
|
||||||
when their service is enabled.
|
|
||||||
Each plugin has ``lib/quantum_plugins/$Q_PLUGIN`` and define the following
|
|
||||||
functions.
|
|
||||||
Plugin specific configuration variables should be in this file.
|
|
||||||
|
|
||||||
* filename: ``$Q_PLUGIN``
|
|
||||||
* The corresponding file name MUST be the same to plugin name ``$Q_PLUGIN``.
|
|
||||||
Plugin specific configuration variables should be in this file.
|
|
||||||
|
|
||||||
functions
|
|
||||||
---------
|
|
||||||
``lib/quantum`` calls the following functions when the ``$Q_PLUGIN`` is enabled
|
|
||||||
|
|
||||||
* ``quantum_plugin_create_nova_conf`` :
|
|
||||||
set ``NOVA_VIF_DRIVER`` and optionally set options in nova_conf
|
|
||||||
e.g.
|
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
|
||||||
* ``quantum_plugin_install_agent_packages`` :
|
|
||||||
install packages that is specific to plugin agent
|
|
||||||
e.g.
|
|
||||||
install_package bridge-utils
|
|
||||||
* ``quantum_plugin_configure_common`` :
|
|
||||||
set plugin-specific variables, ``Q_PLUGIN_CONF_PATH``, ``Q_PLUGIN_CONF_FILENAME``,
|
|
||||||
``Q_DB_NAME``, ``Q_PLUGIN_CLASS``
|
|
||||||
* ``quantum_plugin_configure_debug_command``
|
|
||||||
* ``quantum_plugin_configure_dhcp_agent``
|
|
||||||
* ``quantum_plugin_configure_l3_agent``
|
|
||||||
* ``quantum_plugin_configure_plugin_agent``
|
|
||||||
* ``quantum_plugin_configure_service``
|
|
||||||
* ``quantum_plugin_setup_interface_driver``
|
|
||||||
* ``has_quantum_plugin_security_group``:
|
|
||||||
return 0 if the plugin support quantum security group otherwise return 1
|
|
||||||
* ``quantum_plugin_check_adv_test_requirements``:
|
|
||||||
return 0 if requirements are satisfied otherwise return 1
|
|
@ -1,74 +0,0 @@
|
|||||||
# Quantum Big Switch/FloodLight plugin
|
|
||||||
# ------------------------------------
|
|
||||||
|
|
||||||
# Save trace setting
|
|
||||||
MY_XTRACE=$(set +o | grep xtrace)
|
|
||||||
set +o xtrace
|
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/ovs_base
|
|
||||||
source $TOP_DIR/lib/quantum_thirdparty/bigswitch_floodlight # for third party service specific configuration values
|
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
|
||||||
_quantum_ovs_base_install_agent_packages
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/bigswitch
|
|
||||||
Q_PLUGIN_CONF_FILENAME=restproxy.ini
|
|
||||||
Q_DB_NAME="restproxy_quantum"
|
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.bigswitch.plugin.QuantumRestProxyV2"
|
|
||||||
BS_FL_CONTROLLERS_PORT=${BS_FL_CONTROLLERS_PORT:-localhost:80}
|
|
||||||
BS_FL_CONTROLLER_TIMEOUT=${BS_FL_CONTROLLER_TIMEOUT:-10}
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
|
||||||
_quantum_ovs_base_configure_debug_command
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
|
||||||
:
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
|
||||||
_quantum_ovs_base_configure_l3_agent
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
|
||||||
:
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE restproxy servers $BS_FL_CONTROLLERS_PORT
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE restproxy servertimeout $BS_FL_CONTROLLER_TIMEOUT
|
|
||||||
if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
|
|
||||||
then
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE nova vif_type ivs
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
|
||||||
local conf_file=$1
|
|
||||||
if [ "$BS_FL_VIF_DRIVER" = "ivs" ]
|
|
||||||
then
|
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.IVSInterfaceDriver
|
|
||||||
else
|
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
|
||||||
# 1 means False here
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Restore xtrace
|
|
||||||
$MY_XTRACE
|
|
@ -1,59 +0,0 @@
|
|||||||
# Brocade Quantum Plugin
|
|
||||||
# ----------------------
|
|
||||||
|
|
||||||
# Save trace setting
|
|
||||||
BRCD_XTRACE=$(set +o | grep xtrace)
|
|
||||||
set +o xtrace
|
|
||||||
|
|
||||||
function is_quantum_ovs_base_plugin() {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
|
||||||
NOVA_VIF_DRIVER=${NOVA_VIF_DRIVER:-"nova.virt.libvirt.vif.LibvirtGenericVIFDriver"}
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
|
||||||
install_package bridge-utils
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/brocade
|
|
||||||
Q_PLUGIN_CONF_FILENAME=brocade.ini
|
|
||||||
Q_DB_NAME="brcd_quantum"
|
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.brocade.QuantumPlugin.BrocadePluginV2"
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT external_network_bridge
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT dhcp_agent_manager quantum.agent.dhcp_agent.DhcpAgentWithStateReport
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT external_network_bridge
|
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT l3_agent_manager quantum.agent.l3_agent.L3NATAgentWithStateReport
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
|
||||||
AGENT_BINARY="$QUANTUM_DIR/bin/quantum-linuxbridge-agent"
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
|
||||||
local conf_file=$1
|
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.BridgeInterfaceDriver
|
|
||||||
}
|
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
|
||||||
# 0 means True here
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Restore xtrace
|
|
||||||
$BRCD_XTRACE
|
|
@ -1,80 +0,0 @@
|
|||||||
# Quantum Ryu plugin
|
|
||||||
# ------------------
|
|
||||||
|
|
||||||
# Save trace setting
|
|
||||||
MY_XTRACE=$(set +o | grep xtrace)
|
|
||||||
set +o xtrace
|
|
||||||
|
|
||||||
source $TOP_DIR/lib/quantum_plugins/ovs_base
|
|
||||||
source $TOP_DIR/lib/quantum_thirdparty/ryu # for configuration value
|
|
||||||
|
|
||||||
function quantum_plugin_create_nova_conf() {
|
|
||||||
_quantum_ovs_base_configure_nova_vif_driver
|
|
||||||
iniset $NOVA_CONF DEFAULT libvirt_ovs_integration_bridge "$OVS_BRIDGE"
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_install_agent_packages() {
|
|
||||||
_quantum_ovs_base_install_agent_packages
|
|
||||||
|
|
||||||
# quantum_ryu_agent requires ryu module
|
|
||||||
install_package $(get_packages "ryu")
|
|
||||||
install_ryu
|
|
||||||
configure_ryu
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_common() {
|
|
||||||
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/ryu
|
|
||||||
Q_PLUGIN_CONF_FILENAME=ryu.ini
|
|
||||||
Q_DB_NAME="ovs_quantum"
|
|
||||||
Q_PLUGIN_CLASS="quantum.plugins.ryu.ryu_quantum_plugin.RyuQuantumPluginV2"
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_debug_command() {
|
|
||||||
_quantum_ovs_base_configure_debug_command
|
|
||||||
iniset $QUANTUM_TEST_CONFIG_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_dhcp_agent() {
|
|
||||||
iniset $Q_DHCP_CONF_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_l3_agent() {
|
|
||||||
iniset $Q_L3_CONF_FILE DEFAULT ryu_api_host $RYU_API_HOST:$RYU_API_PORT
|
|
||||||
_quantum_ovs_base_configure_l3_agent
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_plugin_agent() {
|
|
||||||
# Set up integration bridge
|
|
||||||
_quantum_ovs_base_setup_bridge $OVS_BRIDGE
|
|
||||||
if [ -n "$RYU_INTERNAL_INTERFACE" ]; then
|
|
||||||
sudo ovs-vsctl --no-wait -- --may-exist add-port $OVS_BRIDGE $RYU_INTERNAL_INTERFACE
|
|
||||||
fi
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ovs integration_bridge $OVS_BRIDGE
|
|
||||||
AGENT_BINARY="$QUANTUM_DIR/quantum/plugins/ryu/agent/ryu_quantum_agent.py"
|
|
||||||
|
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_configure_service() {
|
|
||||||
iniset /$Q_PLUGIN_CONF_FILE ovs openflow_rest_api $RYU_API_HOST:$RYU_API_PORT
|
|
||||||
|
|
||||||
_quantum_ovs_base_configure_firewall_driver
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_setup_interface_driver() {
|
|
||||||
local conf_file=$1
|
|
||||||
iniset $conf_file DEFAULT interface_driver quantum.agent.linux.interface.OVSInterfaceDriver
|
|
||||||
iniset $conf_file DEFAULT ovs_use_veth True
|
|
||||||
}
|
|
||||||
|
|
||||||
function has_quantum_plugin_security_group() {
|
|
||||||
# 0 means True here
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function quantum_plugin_check_adv_test_requirements() {
|
|
||||||
is_service_enabled q-agt && is_service_enabled q-dhcp && return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Restore xtrace
|
|
||||||
$MY_XTRACE
|
|
10
lib/tempest
10
lib/tempest
@ -185,12 +185,12 @@ function configure_tempest() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled q-l3; then
|
if is_service_enabled q-l3; then
|
||||||
public_network_id=$(quantum net-list | grep $PUBLIC_NETWORK_NAME | \
|
public_network_id=$(neutron net-list | grep $PUBLIC_NETWORK_NAME | \
|
||||||
awk '{print $2}')
|
awk '{print $2}')
|
||||||
if [ "$Q_USE_NAMESPACE" == "False" ]; then
|
if [ "$Q_USE_NAMESPACE" == "False" ]; then
|
||||||
# If namespaces are disabled, devstack will create a single
|
# If namespaces are disabled, devstack will create a single
|
||||||
# public router that tempest should be configured to use.
|
# public router that tempest should be configured to use.
|
||||||
public_router_id=$(quantum router-list | awk "/ $Q_ROUTER_NAME / \
|
public_router_id=$(neutron router-list | awk "/ $Q_ROUTER_NAME / \
|
||||||
{ print \$2 }")
|
{ print \$2 }")
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -223,7 +223,7 @@ function configure_tempest() {
|
|||||||
iniset $TEMPEST_CONF compute change_password_available False
|
iniset $TEMPEST_CONF compute change_password_available False
|
||||||
# Note(nati) current tempest don't create network for each tenant
|
# Note(nati) current tempest don't create network for each tenant
|
||||||
# so reuse same tenant for now
|
# so reuse same tenant for now
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
TEMPEST_ALLOW_TENANT_ISOLATION=${TEMPEST_ALLOW_TENANT_ISOLATION:-False}
|
TEMPEST_ALLOW_TENANT_ISOLATION=${TEMPEST_ALLOW_TENANT_ISOLATION:-False}
|
||||||
fi
|
fi
|
||||||
iniset $TEMPEST_CONF compute allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
|
iniset $TEMPEST_CONF compute allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
|
||||||
@ -252,8 +252,8 @@ function configure_tempest() {
|
|||||||
iniset $TEMPEST_CONF "compute-admin" password "$password" # DEPRECATED
|
iniset $TEMPEST_CONF "compute-admin" password "$password" # DEPRECATED
|
||||||
|
|
||||||
# Network
|
# Network
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
iniset $TEMPEST_CONF network quantum_available "True"
|
iniset $TEMPEST_CONF network neutron_available "True"
|
||||||
fi
|
fi
|
||||||
iniset $TEMPEST_CONF network api_version 2.0
|
iniset $TEMPEST_CONF network api_version 2.0
|
||||||
iniset $TEMPEST_CONF network tenant_networks_reachable "$tenant_networks_reachable"
|
iniset $TEMPEST_CONF network tenant_networks_reachable "$tenant_networks_reachable"
|
||||||
|
@ -66,7 +66,7 @@ LOGDAYS=2
|
|||||||
#KEYSTONECLIENT_BRANCH=milestone-proposed
|
#KEYSTONECLIENT_BRANCH=milestone-proposed
|
||||||
#NOVA_BRANCH=milestone-proposed
|
#NOVA_BRANCH=milestone-proposed
|
||||||
#NOVACLIENT_BRANCH=milestone-proposed
|
#NOVACLIENT_BRANCH=milestone-proposed
|
||||||
#QUANTUM_BRANCH=milestone-proposed
|
#NEUTRON_BRANCH=milestone-proposed
|
||||||
#SWIFT_BRANCH=milestone-proposed
|
#SWIFT_BRANCH=milestone-proposed
|
||||||
|
|
||||||
|
|
||||||
|
56
stack.sh
56
stack.sh
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# ``stack.sh`` is an opinionated OpenStack developer installation. It
|
# ``stack.sh`` is an opinionated OpenStack developer installation. It
|
||||||
# installs and configures various combinations of **Ceilometer**, **Cinder**,
|
# installs and configures various combinations of **Ceilometer**, **Cinder**,
|
||||||
# **Glance**, **Heat**, **Horizon**, **Keystone**, **Nova**, **Quantum**
|
# **Glance**, **Heat**, **Horizon**, **Keystone**, **Nova**, **Neutron**
|
||||||
# and **Swift**.
|
# and **Swift**.
|
||||||
|
|
||||||
# This script allows you to specify configuration options of what git
|
# This script allows you to specify configuration options of what git
|
||||||
@ -307,7 +307,7 @@ source $TOP_DIR/lib/cinder
|
|||||||
source $TOP_DIR/lib/swift
|
source $TOP_DIR/lib/swift
|
||||||
source $TOP_DIR/lib/ceilometer
|
source $TOP_DIR/lib/ceilometer
|
||||||
source $TOP_DIR/lib/heat
|
source $TOP_DIR/lib/heat
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
source $TOP_DIR/lib/baremetal
|
source $TOP_DIR/lib/baremetal
|
||||||
source $TOP_DIR/lib/ldap
|
source $TOP_DIR/lib/ldap
|
||||||
|
|
||||||
@ -583,8 +583,8 @@ if is_service_enabled $DATABASE_BACKENDS; then
|
|||||||
install_database
|
install_database
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
install_quantum_agent_packages
|
install_neutron_agent_packages
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -669,8 +669,8 @@ install_novaclient
|
|||||||
if is_service_enabled swift glance; then
|
if is_service_enabled swift glance; then
|
||||||
install_swiftclient
|
install_swiftclient
|
||||||
fi
|
fi
|
||||||
if is_service_enabled quantum nova; then
|
if is_service_enabled neutron nova; then
|
||||||
install_quantumclient
|
install_neutronclient
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
|
git_clone $OPENSTACKCLIENT_REPO $OPENSTACKCLIENT_DIR $OPENSTACKCLIENT_BRANCH
|
||||||
@ -705,9 +705,9 @@ if is_service_enabled cinder; then
|
|||||||
configure_cinder
|
configure_cinder
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
install_quantum
|
install_neutron
|
||||||
install_quantum_third_party
|
install_neutron_third_party
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled nova; then
|
if is_service_enabled nova; then
|
||||||
@ -879,7 +879,7 @@ if is_service_enabled key; then
|
|||||||
create_keystone_accounts
|
create_keystone_accounts
|
||||||
create_nova_accounts
|
create_nova_accounts
|
||||||
create_cinder_accounts
|
create_cinder_accounts
|
||||||
create_quantum_accounts
|
create_neutron_accounts
|
||||||
|
|
||||||
# ``keystone_data.sh`` creates services, admin and demo users, and roles.
|
# ``keystone_data.sh`` creates services, admin and demo users, and roles.
|
||||||
ADMIN_PASSWORD=$ADMIN_PASSWORD SERVICE_TENANT_NAME=$SERVICE_TENANT_NAME SERVICE_PASSWORD=$SERVICE_PASSWORD \
|
ADMIN_PASSWORD=$ADMIN_PASSWORD SERVICE_TENANT_NAME=$SERVICE_TENANT_NAME SERVICE_PASSWORD=$SERVICE_PASSWORD \
|
||||||
@ -919,22 +919,22 @@ if is_service_enabled g-reg; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Quantum
|
# Neutron
|
||||||
# -------
|
# -------
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
echo_summary "Configuring Quantum"
|
echo_summary "Configuring Neutron"
|
||||||
|
|
||||||
configure_quantum
|
configure_neutron
|
||||||
init_quantum
|
init_neutron
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Some Quantum plugins require network controllers which are not
|
# Some Neutron plugins require network controllers which are not
|
||||||
# a part of the OpenStack project. Configure and start them.
|
# a part of the OpenStack project. Configure and start them.
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
configure_quantum_third_party
|
configure_neutron_third_party
|
||||||
init_quantum_third_party
|
init_neutron_third_party
|
||||||
start_quantum_third_party
|
start_neutron_third_party
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -989,8 +989,8 @@ if is_service_enabled nova; then
|
|||||||
init_nova
|
init_nova
|
||||||
|
|
||||||
# Additional Nova configuration that is dependent on other services
|
# Additional Nova configuration that is dependent on other services
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
create_nova_conf_quantum
|
create_nova_conf_neutron
|
||||||
elif is_service_enabled n-net; then
|
elif is_service_enabled n-net; then
|
||||||
create_nova_conf_nova_network
|
create_nova_conf_nova_network
|
||||||
fi
|
fi
|
||||||
@ -1172,11 +1172,11 @@ if is_service_enabled n-api; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled q-svc; then
|
if is_service_enabled q-svc; then
|
||||||
echo_summary "Starting Quantum"
|
echo_summary "Starting Neutron"
|
||||||
|
|
||||||
start_quantum_service_and_check
|
start_neutron_service_and_check
|
||||||
create_quantum_initial_network
|
create_neutron_initial_network
|
||||||
setup_quantum_debug
|
setup_neutron_debug
|
||||||
elif is_service_enabled $DATABASE_BACKENDS && is_service_enabled n-net; then
|
elif is_service_enabled $DATABASE_BACKENDS && is_service_enabled n-net; then
|
||||||
NM_CONF=${NOVA_CONF}
|
NM_CONF=${NOVA_CONF}
|
||||||
if is_service_enabled n-cell; then
|
if is_service_enabled n-cell; then
|
||||||
@ -1193,8 +1193,8 @@ elif is_service_enabled $DATABASE_BACKENDS && is_service_enabled n-net; then
|
|||||||
$NOVA_BIN_DIR/nova-manage --config-file $NM_CONF floating create --ip_range=$TEST_FLOATING_RANGE --pool=$TEST_FLOATING_POOL
|
$NOVA_BIN_DIR/nova-manage --config-file $NM_CONF floating create --ip_range=$TEST_FLOATING_RANGE --pool=$TEST_FLOATING_POOL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
start_quantum_agents
|
start_neutron_agents
|
||||||
fi
|
fi
|
||||||
if is_service_enabled nova; then
|
if is_service_enabled nova; then
|
||||||
echo_summary "Starting Nova"
|
echo_summary "Starting Nova"
|
||||||
|
18
stackrc
18
stackrc
@ -21,7 +21,7 @@ fi
|
|||||||
# ``disable_service`` functions in ``localrc``.
|
# ``disable_service`` functions in ``localrc``.
|
||||||
# For example, to enable Swift add this to ``localrc``:
|
# For example, to enable Swift add this to ``localrc``:
|
||||||
# enable_service swift
|
# enable_service swift
|
||||||
# In order to enable Quantum (a single node setup) add the following
|
# In order to enable Neutron (a single node setup) add the following
|
||||||
# settings in `` localrc``:
|
# settings in `` localrc``:
|
||||||
# disable_service n-net
|
# disable_service n-net
|
||||||
# enable_service q-svc
|
# enable_service q-svc
|
||||||
@ -29,7 +29,7 @@ fi
|
|||||||
# enable_service q-dhcp
|
# enable_service q-dhcp
|
||||||
# enable_service q-l3
|
# enable_service q-l3
|
||||||
# enable_service q-meta
|
# enable_service q-meta
|
||||||
# enable_service quantum
|
# enable_service neutron
|
||||||
# # Optional, to enable tempest configuration as part of devstack
|
# # Optional, to enable tempest configuration as part of devstack
|
||||||
# enable_service tempest
|
# enable_service tempest
|
||||||
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql
|
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql
|
||||||
@ -117,13 +117,13 @@ OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
|
|||||||
PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
|
||||||
PBR_BRANCH=${PBR_BRANCH:-master}
|
PBR_BRANCH=${PBR_BRANCH:-master}
|
||||||
|
|
||||||
# quantum service
|
# neutron service
|
||||||
QUANTUM_REPO=${QUANTUM_REPO:-${GIT_BASE}/openstack/neutron.git}
|
NEUTRON_REPO=${NEUTRON_REPO:-${GIT_BASE}/openstack/neutron.git}
|
||||||
QUANTUM_BRANCH=${QUANTUM_BRANCH:-master}
|
NEUTRON_BRANCH=${NEUTRON_BRANCH:-master}
|
||||||
|
|
||||||
# quantum client
|
# neutron client
|
||||||
QUANTUMCLIENT_REPO=${QUANTUMCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
|
NEUTRONCLIENT_REPO=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
|
||||||
QUANTUMCLIENT_BRANCH=${QUANTUMCLIENT_BRANCH:-master}
|
NEUTRONCLIENT_BRANCH=${NEUTRONCLIENT_BRANCH:-master}
|
||||||
|
|
||||||
# storage service
|
# storage service
|
||||||
SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
|
||||||
@ -177,7 +177,7 @@ case "$VIRT_DRIVER" in
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
xenserver)
|
xenserver)
|
||||||
# Xen config common to nova and quantum
|
# Xen config common to nova and neutron
|
||||||
XENAPI_USER=${XENAPI_USER:-"root"}
|
XENAPI_USER=${XENAPI_USER:-"root"}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -39,7 +39,7 @@ The `install_os_domU.sh` script will:
|
|||||||
- eth0 - Management interface, connected to `MGT_BRIDGE_OR_NET_NAME`
|
- eth0 - Management interface, connected to `MGT_BRIDGE_OR_NET_NAME`
|
||||||
- eth1 - VM interface, connected to `VM_BRIDGE_OR_NET_NAME`
|
- eth1 - VM interface, connected to `VM_BRIDGE_OR_NET_NAME`
|
||||||
- eth2 - Public interface, connected to `PUB_BRIDGE_OR_NET_NAME`
|
- eth2 - Public interface, connected to `PUB_BRIDGE_OR_NET_NAME`
|
||||||
- (eth3) - Optional network interface if quantum is used, to enforce xapi to
|
- (eth3) - Optional network interface if neutron is used, to enforce xapi to
|
||||||
create the underlying bridge.
|
create the underlying bridge.
|
||||||
- Start devstack inside the created OpenStack VM
|
- Start devstack inside the created OpenStack VM
|
||||||
|
|
||||||
|
@ -58,8 +58,8 @@ install_xapi_plugins_from_zipball $NOVA_ZIPBALL_URL
|
|||||||
|
|
||||||
## Install the netwrap xapi plugin to support agent control of dom0 networking
|
## Install the netwrap xapi plugin to support agent control of dom0 networking
|
||||||
if [[ "$ENABLED_SERVICES" =~ "q-agt" && "$Q_PLUGIN" = "openvswitch" ]]; then
|
if [[ "$ENABLED_SERVICES" =~ "q-agt" && "$Q_PLUGIN" = "openvswitch" ]]; then
|
||||||
QUANTUM_ZIPBALL_URL=${QUANTUM_ZIPBALL_URL:-$(zip_snapshot_location $QUANTUM_REPO $QUANTUM_BRANCH)}
|
NEUTRON_ZIPBALL_URL=${NEUTRON_ZIPBALL_URL:-$(zip_snapshot_location $NEUTRON_REPO $NEUTRON_BRANCH)}
|
||||||
install_xapi_plugins_from_zipball $QUANTUM_ZIPBALL_URL
|
install_xapi_plugins_from_zipball $NEUTRON_ZIPBALL_URL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_directory_for_kernels
|
create_directory_for_kernels
|
||||||
@ -72,9 +72,9 @@ setup_network "$VM_BRIDGE_OR_NET_NAME"
|
|||||||
setup_network "$MGT_BRIDGE_OR_NET_NAME"
|
setup_network "$MGT_BRIDGE_OR_NET_NAME"
|
||||||
setup_network "$PUB_BRIDGE_OR_NET_NAME"
|
setup_network "$PUB_BRIDGE_OR_NET_NAME"
|
||||||
|
|
||||||
# With quantum, one more network is required, which is internal to the
|
# With neutron, one more network is required, which is internal to the
|
||||||
# hypervisor, and used by the VMs
|
# hypervisor, and used by the VMs
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
setup_network "$XEN_INT_BRIDGE_OR_NET_NAME"
|
setup_network "$XEN_INT_BRIDGE_OR_NET_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -255,9 +255,9 @@ add_interface "$GUEST_NAME" "$PUB_BRIDGE_OR_NET_NAME" "$PUB_DEV_NR"
|
|||||||
$THIS_DIR/build_xva.sh "$GUEST_NAME"
|
$THIS_DIR/build_xva.sh "$GUEST_NAME"
|
||||||
|
|
||||||
# Attach a network interface for the integration network (so that the bridge
|
# Attach a network interface for the integration network (so that the bridge
|
||||||
# is created by XenServer). This is required for Quantum. Also pass that as a
|
# is created by XenServer). This is required for Neutron. Also pass that as a
|
||||||
# kernel parameter for DomU
|
# kernel parameter for DomU
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
add_interface "$GUEST_NAME" "$XEN_INT_BRIDGE_OR_NET_NAME" $XEN_INT_DEV_NR
|
add_interface "$GUEST_NAME" "$XEN_INT_BRIDGE_OR_NET_NAME" $XEN_INT_DEV_NR
|
||||||
|
|
||||||
XEN_INTEGRATION_BRIDGE=$(bridge_for "$XEN_INT_BRIDGE_OR_NET_NAME")
|
XEN_INTEGRATION_BRIDGE=$(bridge_for "$XEN_INT_BRIDGE_OR_NET_NAME")
|
||||||
|
12
unstack.sh
12
unstack.sh
@ -29,7 +29,7 @@ source $TOP_DIR/lib/baremetal
|
|||||||
source $TOP_DIR/lib/cinder
|
source $TOP_DIR/lib/cinder
|
||||||
source $TOP_DIR/lib/horizon
|
source $TOP_DIR/lib/horizon
|
||||||
source $TOP_DIR/lib/swift
|
source $TOP_DIR/lib/swift
|
||||||
source $TOP_DIR/lib/quantum
|
source $TOP_DIR/lib/neutron
|
||||||
|
|
||||||
# Determine what system we are running on. This provides ``os_VENDOR``,
|
# Determine what system we are running on. This provides ``os_VENDOR``,
|
||||||
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
|
# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME``
|
||||||
@ -50,7 +50,7 @@ fi
|
|||||||
|
|
||||||
if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then
|
if [[ "$Q_USE_DEBUG_COMMAND" == "True" ]]; then
|
||||||
source $TOP_DIR/openrc
|
source $TOP_DIR/openrc
|
||||||
teardown_quantum_debug
|
teardown_neutron_debug
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Shut down devstack's screen to get the bulk of OpenStack services in one shot
|
# Shut down devstack's screen to get the bulk of OpenStack services in one shot
|
||||||
@ -106,8 +106,8 @@ if [[ -n "$UNSTACK_ALL" ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled quantum; then
|
if is_service_enabled neutron; then
|
||||||
stop_quantum
|
stop_neutron
|
||||||
stop_quantum_third_party
|
stop_neutron_third_party
|
||||||
cleanup_quantum
|
cleanup_neutron
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user