blob: 699d1d395b4b6741eb3c1da1ca863e98fa718380 [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#set -x
usage() {
printf "Usage: %s \n" $(basename $0) >&2
}
moveConfigToBond() {
bond=$1
bondMaster=$(xe bond-param-get param-name=master uuid=$bond)
bondMasterIp=$(xe pif-param-get param-name=IP uuid=$bondMaster)
if [ -z "$bondMasterIp" ]; then
bondSlaves=$(xe bond-param-get param-name=slaves uuid=$bond| tr ';' ' ')
for bondSlave in $bondSlaves; do
bondSlaveIp=$(xe pif-param-get param-name=IP uuid=$bondSlave)
if [ -n "$bondSlaveIp" ]; then
mode=$(xe pif-param-get param-name=IP-configuration-mode uuid=$bondSlave)
netmask=$(xe pif-param-get param-name=netmask uuid=$bondSlave)
gateway=$(xe pif-param-get param-name=gateway uuid=$bondSlave)
DNS=$(xe pif-param-get param-name=DNS uuid=$bondSlave)
management=$(xe pif-param-get param-name=management uuid=$bondSlave)
slavedevice=$(xe pif-param-get param-name=device uuid=$bondSlave)
masterdevice=$(xe pif-param-get param-name=device uuid=$bondMaster)
echo " --configure $masterdevice($bondMaster) DNS=$DNS gateway=$gateway IP=$bondSlaveIp mode=$mode netmask=$netmask"
xe pif-reconfigure-ip DNS=$DNS gateway=$gateway IP=$bondSlaveIp mode=$mode netmask=$netmask uuid=$bondMaster
if [ $? -ne 0 ]; then
echo " --Failed to configure $masterdevice($bondMaster), please run xe pif-reconfigure-ip DNS=$DNS gateway=$gateway IP=$bondSlaveIp mode=$mode netmask=$netmask uuid=$bondMaster manually"
exit 1
fi
echo " --Succeeded"
if [ "$management" = "true" ]; then
echo " --move management interface from $slavedevice($bondSlave) to $masterdevice($bondMaster)"
xe host-management-reconfigure pif-uuid=$bondMaster
if [ $? -ne 0 ]; then
echo " --Failed to move management interface from $bondSlave to $bondMaster, please run xe host-management-reconfigure pif-uuid=$bondMaster manually"
exit 1
fi
echo " --Succeeded"
fi
echo " --remove configuration from $slavedevice($bondSlave)"
xe pif-reconfigure-ip mode=None uuid=$bondSlave
echo " --Succeeded"
break
fi
xe pif-plug uuid=$bondMaster
done
fi
}
poolUuid=$(xe pool-list | grep ^uuid | awk '{print $NF}')
hostMaster=$(xe pool-param-get uuid=$poolUuid param-name=master)
masterName=$(xe host-param-get param-name=hostname uuid=$hostMaster)
masterAddress=$(xe host-param-get param-name=address uuid=$hostMaster)
echo "#Begin check"
echo "##check master $masterName $masterAddress $hostMaster"
masterPifs=$(xe pif-list host-uuid=$hostMaster| grep ^uuid | awk '{print $NF}')
for pif in $masterPifs; do
bond=$(xe pif-param-get param-name=bond-master-of uuid=$pif)
if [ -n "$bond" ]; then
moveConfigToBond $bond
fi
done
echo "##done for master $hostMaster"
hostSlaves=$(xe host-list | grep ^uuid | awk '{print $NF}')
for hostSlave in $hostSlaves; do
if [ "$hostSlave" != "$hostMaster" ]; then
slaveName=$(xe host-param-get param-name=hostname uuid=$hostSlave)
slaverAddress=$(xe host-param-get param-name=address uuid=$hostSlave)
echo "##check slave $slaveName $slaveAddress $hostSlave"
slavePifs=$(xe pif-list host-uuid=$hostSlave| grep ^uuid | awk '{print $NF}')
for slavePif in $slavePifs; do
bond=$(xe pif-param-get param-name=bond-master-of uuid=$slavePif)
if [ -n "$bond" ]; then
moveConfigToBond $bond
fi
done
for masterPif in $masterPifs; do
network=$(xe pif-param-get param-name=network-uuid uuid=$masterPif)
management=$(xe pif-param-get param-name=management uuid=$masterPif)
slavePif=$(xe pif-list host-uuid=$hostSlave network-uuid=$network | grep ^uuid | awk '{print $NF}')
if [ -z "$slavePif" ]; then
echo " --ERROR:There is no NIC $device on host $hostSlave on network $network, please check"
exit 1
fi
done
echo "##done for slave $hostSlave"
fi
done
echo "#check is successful, you can add these hosts to CloudStack."