Adds support to use v1 or v2 quantum api via NOVA_USE_QUANTUM_API
This fixes bug 1017760
Change-Id: Iaf77b830edc51fd4c820ddff9e1f482bc4c9904d
| ... | ... |
@@ -264,6 +264,13 @@ Q_PLUGIN=${Q_PLUGIN:-openvswitch}
|
| 264 | 264 |
Q_PORT=${Q_PORT:-9696}
|
| 265 | 265 |
# Default Quantum Host |
| 266 | 266 |
Q_HOST=${Q_HOST:-localhost}
|
| 267 |
+# Which Quantum API nova should use |
|
| 268 |
+NOVA_USE_QUANTUM_API=${NOVA_USE_QUANTUM_API:-v1}
|
|
| 269 |
+# Default admin username |
|
| 270 |
+Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-quantum}
|
|
| 271 |
+# Default auth strategy |
|
| 272 |
+Q_AUTH_STRATEGY=${Q_AUTH_STRATEGY:-keystone}
|
|
| 273 |
+ |
|
| 267 | 274 |
|
| 268 | 275 |
# Default Melange Port |
| 269 | 276 |
M_PORT=${M_PORT:-9898}
|
| ... | ... |
@@ -375,6 +382,7 @@ PUBLIC_INTERFACE=${PUBLIC_INTERFACE:-$PUBLIC_INTERFACE_DEFAULT}
|
| 375 | 375 |
PUBLIC_INTERFACE=${PUBLIC_INTERFACE:-br100}
|
| 376 | 376 |
FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
|
| 377 | 377 |
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
|
| 378 |
+NETWORK_GATEWAY=${NETWORK_GATEWAY:-10.0.0.1}
|
|
| 378 | 379 |
FLOATING_RANGE=${FLOATING_RANGE:-172.24.4.224/28}
|
| 379 | 380 |
NET_MAN=${NET_MAN:-FlatDHCPManager}
|
| 380 | 381 |
EC2_DMZ_HOST=${EC2_DMZ_HOST:-$SERVICE_HOST}
|
| ... | ... |
@@ -1023,7 +1031,11 @@ if is_service_enabled quantum; then |
| 1023 | 1023 |
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/openvswitch |
| 1024 | 1024 |
Q_PLUGIN_CONF_FILENAME=ovs_quantum_plugin.ini |
| 1025 | 1025 |
Q_DB_NAME="ovs_quantum" |
| 1026 |
- Q_PLUGIN_CLASS="quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin" |
|
| 1026 |
+ if [[ "$NOVA_USE_QUANTUM_API" = "v1" ]]; then |
|
| 1027 |
+ Q_PLUGIN_CLASS="quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin" |
|
| 1028 |
+ elif [[ "$NOVA_USE_QUANTUM_API" = "v2" ]]; then |
|
| 1029 |
+ Q_PLUGIN_CLASS="quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2" |
|
| 1030 |
+ fi |
|
| 1027 | 1031 |
elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then |
| 1028 | 1032 |
# Install deps |
| 1029 | 1033 |
# FIXME add to files/apts/quantum, but don't install if not needed! |
| ... | ... |
@@ -1031,7 +1043,11 @@ if is_service_enabled quantum; then |
| 1031 | 1031 |
Q_PLUGIN_CONF_PATH=etc/quantum/plugins/linuxbridge |
| 1032 | 1032 |
Q_PLUGIN_CONF_FILENAME=linuxbridge_conf.ini |
| 1033 | 1033 |
Q_DB_NAME="quantum_linux_bridge" |
| 1034 |
- Q_PLUGIN_CLASS="quantum.plugins.linuxbridge.LinuxBridgePlugin.LinuxBridgePlugin" |
|
| 1034 |
+ if [[ "$NOVA_USE_QUANTUM_API" = "v1" ]]; then |
|
| 1035 |
+ Q_PLUGIN_CLASS="quantum.plugins.linuxbridge.LinuxBridgePlugin.LinuxBridgePlugin" |
|
| 1036 |
+ elif [[ "$NOVA_USE_QUANTUM_API" = "v2" ]]; then |
|
| 1037 |
+ Q_PLUGIN_CLASS="quantum.plugins.linuxbridge.lb_quantum_plugin.LinuxBridgePluginV2" |
|
| 1038 |
+ fi |
|
| 1035 | 1039 |
else |
| 1036 | 1040 |
echo "Unknown Quantum plugin '$Q_PLUGIN'.. exiting" |
| 1037 | 1041 |
exit 1 |
| ... | ... |
@@ -1055,6 +1071,12 @@ if is_service_enabled quantum; then |
| 1055 | 1055 |
fi |
| 1056 | 1056 |
sudo sed -i -e "s/.*enable_tunneling = .*$/enable_tunneling = $OVS_ENABLE_TUNNELING/g" /$Q_PLUGIN_CONF_FILE |
| 1057 | 1057 |
fi |
| 1058 |
+ |
|
| 1059 |
+ if [[ "$NOVA_USE_QUANTUM_API" = "v1" ]]; then |
|
| 1060 |
+ iniset /$Q_PLUGIN_CONF_FILE AGENT target_v2_api False |
|
| 1061 |
+ elif [[ "$NOVA_USE_QUANTUM_API" = "v2" ]]; then |
|
| 1062 |
+ iniset /$Q_PLUGIN_CONF_FILE AGENT target_v2_api True |
|
| 1063 |
+ fi |
|
| 1058 | 1064 |
fi |
| 1059 | 1065 |
|
| 1060 | 1066 |
# Quantum service (for controller node) |
| ... | ... |
@@ -1064,15 +1086,15 @@ if is_service_enabled q-svc; then |
| 1064 | 1064 |
Q_POLICY_FILE=/etc/quantum/policy.json |
| 1065 | 1065 |
|
| 1066 | 1066 |
if [[ -e $QUANTUM_DIR/etc/quantum.conf ]]; then |
| 1067 |
- sudo mv $QUANTUM_DIR/etc/quantum.conf $Q_CONF_FILE |
|
| 1067 |
+ sudo cp $QUANTUM_DIR/etc/quantum.conf $Q_CONF_FILE |
|
| 1068 | 1068 |
fi |
| 1069 | 1069 |
|
| 1070 | 1070 |
if [[ -e $QUANTUM_DIR/etc/api-paste.ini ]]; then |
| 1071 |
- sudo mv $QUANTUM_DIR/etc/api-paste.ini $Q_API_PASTE_FILE |
|
| 1071 |
+ sudo cp $QUANTUM_DIR/etc/api-paste.ini $Q_API_PASTE_FILE |
|
| 1072 | 1072 |
fi |
| 1073 | 1073 |
|
| 1074 | 1074 |
if [[ -e $QUANTUM_DIR/etc/policy.json ]]; then |
| 1075 |
- sudo mv $QUANTUM_DIR/etc/policy.json $Q_POLICY_FILE |
|
| 1075 |
+ sudo cp $QUANTUM_DIR/etc/policy.json $Q_POLICY_FILE |
|
| 1076 | 1076 |
fi |
| 1077 | 1077 |
|
| 1078 | 1078 |
if is_service_enabled mysql; then |
| ... | ... |
@@ -1110,14 +1132,14 @@ if is_service_enabled q-agt; then |
| 1110 | 1110 |
sudo ovs-vsctl --no-wait add-br $OVS_BRIDGE |
| 1111 | 1111 |
sudo ovs-vsctl --no-wait br-set-external-id $OVS_BRIDGE bridge-id br-int |
| 1112 | 1112 |
sudo sed -i -e "s/.*local_ip = .*/local_ip = $HOST_IP/g" /$Q_PLUGIN_CONF_FILE |
| 1113 |
- AGENT_BINARY=$QUANTUM_DIR/quantum/plugins/openvswitch/agent/ovs_quantum_agent.py |
|
| 1113 |
+ AGENT_BINARY="$QUANTUM_DIR/quantum/plugins/openvswitch/agent/ovs_quantum_agent.py" |
|
| 1114 | 1114 |
elif [[ "$Q_PLUGIN" = "linuxbridge" ]]; then |
| 1115 | 1115 |
# Start up the quantum <-> linuxbridge agent |
| 1116 | 1116 |
install_package bridge-utils |
| 1117 | 1117 |
#set the default network interface |
| 1118 | 1118 |
QUANTUM_LB_PRIVATE_INTERFACE=${QUANTUM_LB_PRIVATE_INTERFACE:-$GUEST_INTERFACE_DEFAULT}
|
| 1119 | 1119 |
sudo sed -i -e "s/^physical_interface = .*$/physical_interface = $QUANTUM_LB_PRIVATE_INTERFACE/g" /$Q_PLUGIN_CONF_FILE |
| 1120 |
- AGENT_BINARY=$QUANTUM_DIR/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py |
|
| 1120 |
+ AGENT_BINARY="$QUANTUM_DIR/quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py" |
|
| 1121 | 1121 |
fi |
| 1122 | 1122 |
# Start up the quantum agent |
| 1123 | 1123 |
screen_it q-agt "sudo python $AGENT_BINARY /$Q_PLUGIN_CONF_FILE -v" |
| ... | ... |
@@ -1694,15 +1716,27 @@ add_nova_opt "fixed_range=$FIXED_RANGE" |
| 1694 | 1694 |
add_nova_opt "s3_host=$SERVICE_HOST" |
| 1695 | 1695 |
add_nova_opt "s3_port=$S3_SERVICE_PORT" |
| 1696 | 1696 |
if is_service_enabled quantum; then |
| 1697 |
- add_nova_opt "network_manager=nova.network.quantum.manager.QuantumManager" |
|
| 1698 |
- add_nova_opt "quantum_connection_host=$Q_HOST" |
|
| 1699 |
- add_nova_opt "quantum_connection_port=$Q_PORT" |
|
| 1697 |
+ if [[ "$NOVA_USE_QUANTUM_API" = "v1" ]]; then |
|
| 1698 |
+ add_nova_opt "network_manager=nova.network.quantum.manager.QuantumManager" |
|
| 1699 |
+ add_nova_opt "quantum_connection_host=$Q_HOST" |
|
| 1700 |
+ add_nova_opt "quantum_connection_port=$Q_PORT" |
|
| 1701 |
+ add_nova_opt "quantum_use_dhcp=True" |
|
| 1702 |
+ |
|
| 1703 |
+ if is_service_enabled melange; then |
|
| 1704 |
+ add_nova_opt "quantum_ipam_lib=nova.network.quantum.melange_ipam_lib" |
|
| 1705 |
+ add_nova_opt "use_melange_mac_generation=True" |
|
| 1706 |
+ add_nova_opt "melange_host=$M_HOST" |
|
| 1707 |
+ add_nova_opt "melange_port=$M_PORT" |
|
| 1708 |
+ fi |
|
| 1700 | 1709 |
|
| 1701 |
- if is_service_enabled melange; then |
|
| 1702 |
- add_nova_opt "quantum_ipam_lib=nova.network.quantum.melange_ipam_lib" |
|
| 1703 |
- add_nova_opt "use_melange_mac_generation=True" |
|
| 1704 |
- add_nova_opt "melange_host=$M_HOST" |
|
| 1705 |
- add_nova_opt "melange_port=$M_PORT" |
|
| 1710 |
+ elif [[ "$NOVA_USE_QUANTUM_API" = "v2" ]]; then |
|
| 1711 |
+ add_nova_opt "network_api_class=nova.network.quantumv2.api.API" |
|
| 1712 |
+ add_nova_opt "quantum_admin_username=$Q_ADMIN_USERNAME" |
|
| 1713 |
+ add_nova_opt "quantum_admin_password=$SERVICE_PASSWORD" |
|
| 1714 |
+ add_nova_opt "quantum_admin_auth_url=$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/v2.0" |
|
| 1715 |
+ add_nova_opt "quantum_auth_strategy=$Q_AUTH_STRATEGY" |
|
| 1716 |
+ add_nova_opt "quantum_admin_tenant_name=$SERVICE_TENANT_NAME" |
|
| 1717 |
+ add_nova_opt "quantum_url=http://$Q_HOST:$Q_PORT" |
|
| 1706 | 1718 |
fi |
| 1707 | 1719 |
|
| 1708 | 1720 |
if [[ "$Q_PLUGIN" = "openvswitch" ]]; then |
| ... | ... |
@@ -1715,7 +1749,6 @@ if is_service_enabled quantum; then |
| 1715 | 1715 |
add_nova_opt "libvirt_vif_type=ethernet" |
| 1716 | 1716 |
add_nova_opt "libvirt_vif_driver=$NOVA_VIF_DRIVER" |
| 1717 | 1717 |
add_nova_opt "linuxnet_interface_driver=$LINUXNET_VIF_DRIVER" |
| 1718 |
- add_nova_opt "quantum_use_dhcp=True" |
|
| 1719 | 1718 |
else |
| 1720 | 1719 |
add_nova_opt "network_manager=nova.network.manager.$NET_MAN" |
| 1721 | 1720 |
fi |
| ... | ... |
@@ -1914,9 +1947,9 @@ if is_service_enabled key; then |
| 1914 | 1914 |
|
| 1915 | 1915 |
# Add quantum endpoints to service catalog if quantum is enabled |
| 1916 | 1916 |
if is_service_enabled quantum; then |
| 1917 |
- echo "catalog.RegionOne.network.publicURL = http://%SERVICE_HOST%:9696/" >> $KEYSTONE_CATALOG |
|
| 1918 |
- echo "catalog.RegionOne.network.adminURL = http://%SERVICE_HOST%:9696/" >> $KEYSTONE_CATALOG |
|
| 1919 |
- echo "catalog.RegionOne.network.internalURL = http://%SERVICE_HOST%:9696/" >> $KEYSTONE_CATALOG |
|
| 1917 |
+ echo "catalog.RegionOne.network.publicURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG |
|
| 1918 |
+ echo "catalog.RegionOne.network.adminURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG |
|
| 1919 |
+ echo "catalog.RegionOne.network.internalURL = http://%SERVICE_HOST%:$Q_PORT/" >> $KEYSTONE_CATALOG |
|
| 1920 | 1920 |
echo "catalog.RegionOne.network.name = Quantum Service" >> $KEYSTONE_CATALOG |
| 1921 | 1921 |
fi |
| 1922 | 1922 |
|
| ... | ... |
@@ -1995,14 +2028,24 @@ fi |
| 1995 | 1995 |
# If we're using Quantum (i.e. q-svc is enabled), network creation has to |
| 1996 | 1996 |
# happen after we've started the Quantum service. |
| 1997 | 1997 |
if is_service_enabled mysql && is_service_enabled nova; then |
| 1998 |
- # Create a small network |
|
| 1999 |
- $NOVA_DIR/bin/nova-manage network create private $FIXED_RANGE 1 $FIXED_NETWORK_SIZE $NETWORK_CREATE_ARGS |
|
| 1998 |
+ if [[ "$NOVA_USE_QUANTUM_API" = "v1" ]]; then |
|
| 1999 |
+ # Create a small network |
|
| 2000 |
+ $NOVA_DIR/bin/nova-manage network create private $FIXED_RANGE 1 $FIXED_NETWORK_SIZE $NETWORK_CREATE_ARGS |
|
| 2001 |
+ |
|
| 2002 |
+ # Create some floating ips |
|
| 2003 |
+ $NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE |
|
| 2000 | 2004 |
|
| 2001 |
- # Create some floating ips |
|
| 2002 |
- $NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE |
|
| 2005 |
+ # Create a second pool |
|
| 2006 |
+ $NOVA_DIR/bin/nova-manage floating create --ip_range=$TEST_FLOATING_RANGE --pool=$TEST_FLOATING_POOL |
|
| 2007 |
+ elif [[ "$NOVA_USE_QUANTUM_API" = "v2" ]]; then |
|
| 2008 |
+ TENANT_ID=$(keystone tenant-list | grep " demo " | get_field 1) |
|
| 2003 | 2009 |
|
| 2004 |
- # Create a second pool |
|
| 2005 |
- $NOVA_DIR/bin/nova-manage floating create --ip_range=$TEST_FLOATING_RANGE --pool=$TEST_FLOATING_POOL |
|
| 2010 |
+ # Create a small network |
|
| 2011 |
+ NET_ID=$(quantum net-create --os_token $Q_ADMIN_USERNAME --os_url http://$Q_HOST:$Q_PORT --tenant_id $TENANT_ID net1 | grep ' id ' | get_field 2) |
|
| 2012 |
+ |
|
| 2013 |
+ # Create a subnet |
|
| 2014 |
+ quantum subnet-create --os_token $Q_ADMIN_USERNAME --os_url http://$Q_HOST:$Q_PORT --tenant_id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY $NET_ID $FIXED_RANGE |
|
| 2015 |
+ fi |
|
| 2006 | 2016 |
fi |
| 2007 | 2017 |
|
| 2008 | 2018 |
# Launching nova-compute should be as simple as running ``nova-compute`` but |