4f11ff30cf
The neutron client is going to be deprecated during the Ocata timeframe, so it is time to start switching to the openstack client to invoke networking commands. use of neutron client in neutron-legacy has been left as is. The command for setting the router gateway is left as follow up. Change-Id: I0a63e03d7d4a08ad6c27f2729fc298322baab397
66 lines
1.8 KiB
Bash
Executable File
66 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
# Ping a neutron guest using a network namespace probe
|
|
|
|
set -o errexit
|
|
set -o pipefail
|
|
|
|
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
|
|
|
|
# This *must* be run as the admin tenant
|
|
source $TOP_DIR/openrc admin admin
|
|
|
|
function usage {
|
|
cat - <<EOF
|
|
ping_neutron.sh <net_name> [ping args]
|
|
|
|
This provides a wrapper to ping neutron guests that are on isolated
|
|
tenant networks that the caller can't normally reach. It does so by
|
|
creating a network namespace probe.
|
|
|
|
It takes arguments like ping, except the first arg must be the network
|
|
name.
|
|
|
|
Note: in environments with duplicate network names, the results are
|
|
non deterministic.
|
|
|
|
This should *really* be in the neutron cli.
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
NET_NAME=$1
|
|
|
|
if [[ -z "$NET_NAME" ]]; then
|
|
echo "Error: net_name is required"
|
|
usage
|
|
fi
|
|
|
|
REMAINING_ARGS="${@:2}"
|
|
|
|
# BUG: with duplicate network names, this fails pretty hard.
|
|
NET_ID=$(openstack network list | grep "$NET_NAME" | awk '{print $2}')
|
|
PROBE_ID=$(neutron-debug probe-list -c id -c network_id | grep "$NET_ID" | awk '{print $2}' | head -n 1)
|
|
|
|
# This runs a command inside the specific netns
|
|
NET_NS_CMD="ip netns exec qprobe-$PROBE_ID"
|
|
|
|
PING_CMD="sudo $NET_NS_CMD ping $REMAINING_ARGS"
|
|
echo "Running $PING_CMD"
|
|
$PING_CMD
|