|
...
|
...
|
@@ -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
|