summaryrefslogtreecommitdiff
path: root/devstack
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2019-09-17 11:08:00 +1200
committerLingxian Kong <anlin.kong@gmail.com>2019-09-17 13:52:21 +1200
commitf771e939ebe23a0e0e7da20d87b4256f5e3d2bc1 (patch)
treee4c9019679ba112dc789941a1ff54995fb7b076b /devstack
parentb43248be7981d994e69b0f708e5168eea8448c2d (diff)
downloadtrove-f771e939ebe23a0e0e7da20d87b4256f5e3d2bc1.tar.gz
Fix Trove CI failure
- Remove Designate v1 support. python-designateclient removed v1 support in https://github.com/openstack/python-designateclient/commit/093d8d7170cbf6ef8c7a7c0ff2a4dcd7ecd6361b - Fix get port IP address error in devstack script. Change-Id: I08916ddfba85c0218aeab5bfbad58ce3222521f3
Diffstat (limited to 'devstack')
-rw-r--r--devstack/plugin.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/devstack/plugin.sh b/devstack/plugin.sh
index d99c9a7f..917718a9 100644
--- a/devstack/plugin.sh
+++ b/devstack/plugin.sh
@@ -285,6 +285,8 @@ EOF
# install_trove() - Collect source and prepare
function install_trove {
+ install_package jq
+
echo "Changing stack user sudoers"
echo "stack ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/60_stack_sh_allow_all
@@ -541,6 +543,79 @@ manage_etc_hosts: "localhost"
EOF
}
+# Set up Trove management network and make configuration change.
+function config_trove_network {
+ echo "Finalizing Neutron networking for Trove"
+ echo "Dumping current network parameters:"
+ echo " SERVICE_HOST: $SERVICE_HOST"
+ echo " BRIDGE_IP: $BRIDGE_IP"
+ echo " PUBLIC_NETWORK_GATEWAY: $PUBLIC_NETWORK_GATEWAY"
+ echo " NETWORK_GATEWAY: $NETWORK_GATEWAY"
+ echo " IPV4_ADDRS_SAFE_TO_USE: $IPV4_ADDRS_SAFE_TO_USE"
+ echo " IPV6_ADDRS_SAFE_TO_USE: $IPV6_ADDRS_SAFE_TO_USE"
+ echo " FIXED_RANGE: $FIXED_RANGE"
+ echo " FLOATING_RANGE: $FLOATING_RANGE"
+ echo " SUBNETPOOL_PREFIX_V4: $SUBNETPOOL_PREFIX_V4"
+ echo " SUBNETPOOL_SIZE_V4: $SUBNETPOOL_SIZE_V4"
+ echo " SUBNETPOOL_V4_ID: $SUBNETPOOL_V4_ID"
+ echo " ROUTER_GW_IP: $ROUTER_GW_IP"
+ echo " TROVE_MGMT_SUBNET_RANGE: ${TROVE_MGMT_SUBNET_RANGE}"
+
+ # Save xtrace setting
+ local XTRACE
+ XTRACE=$(set +o | grep xtrace)
+ set -x
+
+ echo "Creating Trove management network/subnet for Trove service project."
+ trove_service_project_id=$(openstack project show $SERVICE_PROJECT_NAME -c id -f value)
+ setup_mgmt_network ${trove_service_project_id} ${TROVE_MGMT_NETWORK_NAME} ${TROVE_MGMT_SUBNET_NAME} ${TROVE_MGMT_SUBNET_RANGE}
+ mgmt_net_id=$(openstack network show ${TROVE_MGMT_NETWORK_NAME} -c id -f value)
+ echo "Created Trove management network ${TROVE_MGMT_NETWORK_NAME}(${mgmt_net_id})"
+
+ # Share the private network to other projects for testing purpose. We make
+ # the private network accessible to control plane below so that we could
+ # reach the private network for integration tests without floating ips
+ # associated, no matter which user the tests are using.
+ shared=$(openstack network show ${PRIVATE_NETWORK_NAME} -c shared -f value)
+ if [[ "$shared" == "False" ]]; then
+ openstack network set ${PRIVATE_NETWORK_NAME} --share
+ fi
+ sudo ip route replace ${IPV4_ADDRS_SAFE_TO_USE} via $ROUTER_GW_IP
+
+ # Make sure we can reach the management port of the service VM, this
+ # configuration is only for testing purpose. In production, it's
+ # recommended to config the router in the cloud infrastructure for the
+ # communication between Trove control plane and service VMs.
+ INTERFACE=trove-mgmt
+ MGMT_PORT_ID=$(openstack port create --project ${trove_service_project_id} --security-group ${TROVE_MGMT_SECURITY_GROUP} --device-owner trove --network ${TROVE_MGMT_NETWORK_NAME} --host=$(hostname) -c id -f value ${INTERFACE}-port)
+ MGMT_PORT_MAC=$(openstack port show -c mac_address -f value $MGMT_PORT_ID)
+ MGMT_PORT_IP=$(openstack port show -f value -c fixed_ips $MGMT_PORT_ID)
+ MGMT_PORT_IP=${MGMT_PORT_IP//u\'/\'}
+ MGMT_PORT_IP=$(echo ${MGMT_PORT_IP//\'/\"} | jq -r '.[0].ip_address')
+ sudo ovs-vsctl -- --may-exist add-port ${OVS_BRIDGE:-br-int} $INTERFACE -- set Interface $INTERFACE type=internal -- set Interface $INTERFACE external-ids:iface-status=active -- set Interface $INTERFACE external-ids:attached-mac=$MGMT_PORT_MAC -- set Interface $INTERFACE external-ids:iface-id=$MGMT_PORT_ID -- set Interface $INTERFACE external-ids:skip_cleanup=true
+ sudo ip link set dev $INTERFACE address $MGMT_PORT_MAC
+ mask=$(echo ${TROVE_MGMT_SUBNET_RANGE} | awk -F'/' '{print $2}')
+ sudo ip addr add ${MGMT_PORT_IP}/${mask} dev $INTERFACE
+ sudo ip link set $INTERFACE up
+
+ echo "Neutron network list:"
+ openstack network list
+ echo "Neutron subnet list:"
+ openstack subnet list
+ echo "ip route:"
+ sudo ip route
+
+ # Now make sure the conf settings are right
+ iniset $TROVE_CONF DEFAULT network_label_regex ${PRIVATE_NETWORK_NAME}
+ iniset $TROVE_CONF DEFAULT ip_regex ""
+ iniset $TROVE_CONF DEFAULT black_list_regex ""
+ iniset $TROVE_CONF DEFAULT management_networks ${mgmt_net_id}
+ iniset $TROVE_CONF DEFAULT network_driver trove.network.neutron.NeutronDriver
+
+ # Restore xtrace setting
+ $XTRACE
+}
+
function config_nova_keypair {
export SSH_DIR=${SSH_DIR:-"$HOME/.ssh"}