#!/bin/bash # Copyright 2012 Citrix Systems, Inc. Licensed under the # Apache License, Version 2.0 (the "License"); you may not use this # file except in compliance with the License. Citrix Systems, Inc. # reserves all rights not expressly granted by 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. # # Automatically generated by addcopyright.py at 04/03/2012 #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=$(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."