summaryrefslogtreecommitdiffstats
path: root/common/ci
diff options
context:
space:
mode:
Diffstat (limited to 'common/ci')
-rwxr-xr-xcommon/ci/clean.sh326
-rwxr-xr-xcommon/ci/setup.sh270
2 files changed, 596 insertions, 0 deletions
diff --git a/common/ci/clean.sh b/common/ci/clean.sh
new file mode 100755
index 000000000..cc116e8d5
--- /dev/null
+++ b/common/ci/clean.sh
@@ -0,0 +1,326 @@
+#!/usr/bin/env bash
+
+#Common clean script to uninstall provisioning server
+#author: Tim Rozet (trozet@redhat.com)
+#
+#Removes Libvirt, KVM, Vagrant, VirtualBox
+#
+#Destroys Vagrant VMs running in $vm_dir/
+#Shuts down all nodes found in Khaleesi settings
+#Removes hypervisor kernel modules (VirtualBox & KVM/Libvirt)
+
+##VARS
+reset=`tput sgr0`
+blue=`tput setaf 4`
+red=`tput setaf 1`
+green=`tput setaf 2`
+pxe_bridge='pxebr'
+vm_dir=/var/opt/opnfv
+first_interface='enp6s0'
+second_interface='enp7s0'
+management_vid=300
+management_interface="${first_interface}.${management_vid}"
+##END VARS
+
+##FUNCTIONS
+display_usage() {
+ echo -e "\n\n${blue}This script is used to uninstall and clean the OPNFV Target System${reset}\n\n"
+ echo -e "\nUsage:\n$0 [arguments] \n"
+ echo -e "\n -no_parse : No variable parsing into config. Flag. \n"
+ echo -e "\n -base_config : Full path of ksgen settings file to parse. Required. Will provide BMC info to shutdown hosts. Example: -base_config /opt/myinventory.yml \n"
+}
+
+remove_interface_with_name_pattern() {
+ if [ -z $1 ]; then
+ echo "${red}Cannot remove interface. No interface name pattern specified!${reset}"
+ exit 1
+ fi
+ local interface_name_pattern=$1
+ echo "${blue} Looking for interface with name pattern: ${interface_name_pattern}${reset}"
+ interface=$(ip link show | grep -oP ${interface_name_pattern})
+ if [ ! -z "${interface}" ]; then
+ echo "${blue}Interface ${interface} detected! Removing...${reset}"
+ ip link del ${interface}
+ if ip link show | grep -oP ${interface_name_pattern}; then
+ echo "${red}Could not remove interface ${interface} ${reset}"
+ exit 1
+ else
+ echo "${blue}Interface ${interface} successfully removed${reset}"
+ fi
+ else
+ echo "${blue}Interface with name pattern ${interface_name_pattern} does not exist, nothing to remove${reset}"
+ fi
+}
+##END FUNCTIONS
+
+if [[ ( $1 == "--help") || $1 == "-h" ]]; then
+ display_usage
+ exit 0
+fi
+
+echo -e "\n\n${blue}This script is used to uninstall and clean the OPNFV Target System${reset}\n\n"
+echo "Use -h to display help"
+sleep 2
+
+while [ "`echo $1 | cut -c1`" = "-" ]
+do
+ echo $1
+ case "$1" in
+ -base_config)
+ base_config=$2
+ shift 2
+ ;;
+ *)
+ display_usage
+ exit 1
+ ;;
+esac
+done
+
+if [ ! -z "$base_config" ]; then
+ # Install ipmitool
+ # Major version is pinned to force some consistency for Arno
+ if ! yum list installed | grep -i ipmitool; then
+ if ! yum -y install ipmitool-1*; then
+ echo "${red}Unable to install ipmitool!${reset}"
+ exit 1
+ fi
+ else
+ echo "${blue}Skipping ipmitool as it is already installed!${reset}"
+ fi
+
+ ###find all the bmc IPs and number of nodes
+ node_counter=0
+ output=`grep bmc_ip $base_config | grep -Eo '[0-9]+.[0-9]+.[0-9]+.[0-9]+'`
+ for line in ${output} ; do
+ bmc_ip[$node_counter]=$line
+ ((node_counter++))
+ done
+
+ max_nodes=$((node_counter-1))
+
+ ###find bmc_users per node
+ node_counter=0
+ output=`grep bmc_user $base_config | sed 's/\s*bmc_user:\s*//'`
+ for line in ${output} ; do
+ bmc_user[$node_counter]=$line
+ ((node_counter++))
+ done
+
+ ###find bmc_pass per node
+ node_counter=0
+ output=`grep bmc_pass $base_config | sed 's/\s*bmc_pass:\s*//'`
+ for line in ${output} ; do
+ bmc_pass[$node_counter]=$line
+ ((node_counter++))
+ done
+ for mynode in `seq 0 $max_nodes`; do
+ echo "${blue}Node: ${bmc_ip[$mynode]} ${bmc_user[$mynode]} ${bmc_pass[$mynode]} ${reset}"
+ if ipmitool -I lanplus -P ${bmc_pass[$mynode]} -U ${bmc_user[$mynode]} -H ${bmc_ip[$mynode]} chassis power off; then
+ echo "${blue}Node: $mynode, ${bmc_ip[$mynode]} powered off!${reset}"
+ else
+ echo "${red}Error: Unable to power off $mynode, ${bmc_ip[$mynode]} ${reset}"
+ exit 1
+ fi
+ done
+else
+ echo "${blue}Skipping Baremetal node poweroff as base_config was not provided${reset}"
+fi
+###check to see if vbox is installed
+vboxpkg=`rpm -qa | grep VirtualBox`
+if [ $? -eq 0 ]; then
+ skip_vagrant=0
+else
+ skip_vagrant=1
+fi
+
+###legacy VM location check
+###remove me later
+if [ -d /tmp/bgs_vagrant ]; then
+ cd /tmp/bgs_vagrant
+ vagrant destroy -f
+ rm -rf /tmp/bgs_vagrant
+fi
+
+###destroy vagrant
+if [ $skip_vagrant -eq 0 ]; then
+ if [ -d $vm_dir ]; then
+ ##all vm directories
+ for vm in $( ls $vm_dir ); do
+ cd $vm_dir/$vm
+ if vagrant destroy -f; then
+ echo "${blue}Successfully destroyed $vm Vagrant VM ${reset}"
+ else
+ echo "${red}Unable to destroy $vm Vagrant VM! Attempting to killall vagrant if process is hung ${reset}"
+ killall vagrant
+ echo "${blue}Checking if vagrant was already destroyed and no process is active...${reset}"
+ if ps axf | grep vagrant; then
+ echo "${red}Vagrant process still exists after kill...exiting ${reset}"
+ exit 1
+ else
+ echo "${blue}Vagrant process doesn't exist. Moving on... ${reset}"
+ fi
+ fi
+
+ ##Vagrant boxes appear as VboxHeadless processes
+ ##try to gracefully destroy the VBox VM if it still exists
+ if vboxmanage list runningvms | grep $vm; then
+ echo "${red} $vm VBoxHeadless process still exists...Removing${reset}"
+ vbox_id=$(vboxmanage list runningvms | grep $vm | awk '{print $1}' | sed 's/"//g')
+ vboxmanage controlvm $vbox_id poweroff
+ if vboxmanage unregistervm --delete $vbox_id; then
+ echo "${blue}$vm VM is successfully deleted! ${reset}"
+ else
+ echo "${red} Unable to delete VM $vm ...Exiting ${reset}"
+ exit 1
+ fi
+ else
+ echo "${blue}$vm VM is successfully deleted! ${reset}"
+ fi
+ done
+ else
+ echo "${blue}${vm_dir} doesn't exist, no VMs in OPNFV directory to destroy! ${reset}"
+ fi
+
+ echo "${blue}Checking for any remaining virtual box processes...${reset}"
+ ###kill virtualbox
+ if ps axf | grep virtualbox; then
+ echo "${blue}virtualbox processes are still running. Killing any remaining VirtualBox processes...${reset}"
+ killall virtualbox
+ fi
+
+ ###kill any leftover VMs (brute force)
+ if ps axf | grep VBoxHeadless; then
+ echo "${blue}VBoxHeadless processes are still running. Killing any remaining VBoxHeadless processes...${reset}"
+ killall VBoxHeadless
+ fi
+
+ ###remove virtualbox
+ echo "${blue}Removing VirtualBox... ${reset}"
+ yum -y remove $vboxpkg
+
+else
+ echo "${blue}Skipping Vagrant destroy + VBox Removal as VirtualBox package is already removed ${reset}"
+fi
+
+###remove working vm directory
+echo "${blue}Removing working VM directory: $vm_dir ${reset}"
+rm -rf $vm_dir
+
+###check to see if libvirt is installed
+echo "${blue}Checking if libvirt/KVM is installed"
+if rpm -qa | grep -iE 'libvirt|kvm'; then
+ echo "${blue}Libvirt/KVM is installed${reset}"
+ echo "${blue}Checking for any QEMU/KVM VMs...${reset}"
+ vm_count=0
+ while read -r line; do ((vm_count++)); done < <(virsh list --all | sed 1,2d | head -n -1)
+ if [ $vm_count -gt 0 ]; then
+ echo "${blue}VMs Found: $vm_count${reset}"
+ vm_runnning=0
+ while read -r line; do ((vm_running++)); done < <(virsh list --all | sed 1,2d | head -n -1| grep -i running)
+ echo "${blue}Powering off $vm_running VM(s)${reset}"
+ while read -r vm; do
+ if ! virsh destroy $vm; then
+ echo "${red}WARNING: Unable to power off VM ${vm}${reset}"
+ else
+ echo "${blue}VM $vm powered off!${reset}"
+ fi
+ done < <(virsh list --all | sed 1,2d | head -n -1| grep -i running | sed 's/^[ \t]*//' | awk '{print $2}')
+ echo "${blue}Destroying libvirt VMs...${reset}"
+ while read -r vm; do
+ if ! virsh undefine --remove-all-storage $vm; then
+ echo "${red}ERROR: Unable to remove the VM ${vm}${reset}"
+ exit 1
+ else
+ echo "${blue}VM $vm removed!${reset}"
+ fi
+ done < <(virsh list --all | sed 1,2d | head -n -1| awk '{print $2}')
+ else
+ echo "${blue}No VMs found for removal"
+ fi
+ echo "${blue}Removing libvirt and kvm packages"
+ yum -y remove libvirt-*
+ yum -y remove *qemu*
+else
+ echo "${blue}libvirt/KVM is not installed${reset}"
+fi
+
+###remove possible VMs (needed for 'rmmod kvm_intel')
+if [ -n "$(ps -ef | grep qemu-kvm | grep -v grep)" ]; then
+ echo "${blue}Removing existing VMs ${reset}"
+ killall -9 qemu-kvm
+fi
+
+###remove kernel modules
+echo "${blue}Removing kernel modules ${reset}"
+for kernel_mod in vboxnetadp vboxnetflt vboxpci vboxdrv kvm_intel kvm; do
+ if ! rmmod $kernel_mod; then
+ if rmmod $kernel_mod 2>&1 | grep -i 'not currently loaded'; then
+ echo "${blue} $kernel_mod is not currently loaded! ${reset}"
+ else
+ echo "${red}Error trying to remove Kernel Module: $kernel_mod ${reset}"
+ exit 1
+ fi
+ else
+ echo "${blue}Removed Kernel Module: $kernel_mod ${reset}"
+ fi
+done
+
+###remove PXE bridge
+echo "${blue}Checking whether PXE bridge ${pxe_bridge} exists${reset}"
+if ! brctl show ${pxe_bridge} 2>&1 | grep -i 'No such device'; then
+ echo "${blue}PXE bridge ${pxe_bridge} detected! Removing...${reset}"
+ link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} != 'DOWN' ]]; then
+ ip link set dev ${pxe_bridge} down
+ sleep 5
+ link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} != 'DOWN' ]]; then
+ echo "${red}Could not bring DOWN bridge ${pxe_bridge} link state is ${link_state}${reset}"
+ exit 1
+ fi
+ fi
+ brctl delbr ${pxe_bridge}
+ if ifconfig | grep ${pxe_bridge} || brctl show | grep ${pxe_bridge}; then
+ echo "${red}Error trying to remove ${pxe_bridge}${reset}"
+ exit 1
+ else
+ echo "${blue}PXE bridge ${pxe_bridge} removed${reset}"
+ fi
+else
+ echo "${blue}PXE bridge ${pxe_bridge} does not exist${reset}"
+fi
+
+###remove PXE interface (VLAN 0)
+echo "${blue}Checking whether PXE interface (VLAN 0) exists and remove it${reset}"
+remove_interface_with_name_pattern "enp.+s.+\.0"
+
+###remove Openstack Management interface (VLAN 300)
+echo "${blue}Checking whether Openstack Management interface (VLAN 300) exists and remove it${reset}"
+remove_interface_with_name_pattern "enp.+s.+\.${management_vid}"
+
+###bounce interfaces to restore default IP config
+echo "${blue}Bouncing interfaces to restore IP config${reset}"
+for interface in $first_interface $second_interface; do
+ echo "${blue}Bouncing interface: ${interface}${reset}"
+ ifdown $interface
+ sleep 5
+ ifup $interface
+ tries=5
+ counter=0
+ while [ $counter -lt $tries ]; do
+ if ip addr show $interface | grep -Eo "inet [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"; then
+ temp_ip=$(ip addr show $interface | grep -Eo "inet [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | awk '{print $2}')
+ echo "${blue}IP found on ${interface}. IP is ${temp_ip}${reset}"
+ break
+ else
+ ((counter++))
+ sleep 2
+ fi
+ done
+
+ if [ "$counter" -ge 5 ]; then
+ echo "${red}Error: Unable to get IP address on ${interface}${reset}"
+ exit 1
+ fi
+done
diff --git a/common/ci/setup.sh b/common/ci/setup.sh
new file mode 100755
index 000000000..bb54147b3
--- /dev/null
+++ b/common/ci/setup.sh
@@ -0,0 +1,270 @@
+#!/usr/bin/env bash
+
+#Script that install prerequisites
+#author: Szilard Cserey (szilard.cserey@ericsson.com)
+#
+#Installs qemu-kvm, libvirt and prepares networking for Fuel VM
+
+##VARS
+reset=`tput sgr0`
+blue=`tput setaf 4`
+red=`tput setaf 1`
+green=`tput setaf 2`
+private_interface='enp6s0'
+public_interface='enp8s0'
+pxe_bridge='pxebr'
+fuel_gw_ip='10.20.0.1/16'
+management_vid=300
+management_interface="${private_interface}.${management_vid}"
+##END VARS
+
+##FUNCTIONS
+###check whether qemu-kvm is installed, otherwise install it
+install_qemu_kvm() {
+ echo "${blue}Checking whether qemu-kvm is installed, otherwise install it${reset}"
+ if ! rpm -qa | grep -iE 'qemu-kvm'; then
+ echo "${blue}qemu-kvm is not installed, installing...${reset}"
+ yum -y install qemu-kvm
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###check whether libvirt is installed, otherwise install it
+install_libvirt() {
+ echo "${blue}Checking whether libvirt is installed, otherwise install it${reset}"
+ if ! rpm -qa | grep -iE 'libvirt'; then
+ echo "${blue}libvirt is not installed, installing...${reset}"
+ yum -y install libvirt
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###check whether kvm kernel module is loaded, otherwise load it
+load_kvm_kernel_mod() {
+ echo "${blue}Checking whether kvm kernel module is loaded, otherwise load it${reset}"
+ if ! lsmod | grep -iE 'kvm'; then
+ if [[ `lscpu | grep 'Vendor ID' | awk 'BEGIN { FS = ":" } ; {print $2}' | tr -d ' '` == 'GenuineIntel' ]]; then
+ echo "${blue}Intel processor identified, loading kernel module kvm-intel${reset}"
+ kernel_mod='kvm-intel'
+ modprobe ${kernel_mod}
+ fi
+ if [[ `lscpu | grep 'Vendor ID' | awk 'BEGIN { FS = ":" } ; {print $2}' | tr -d ' '` == 'AuthenticAMD' ]]; then
+ echo "${blue}AMD processor identified, loading kernel module kvm-amd${reset}"
+ kernel_mod='kvm-amd'
+ modprobe ${kernel_mod}
+ fi
+ if ! lsmod | grep -iE 'kvm'; then
+ echo "${red}Failed to load kernel module ${kernel_mod}!${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###check whether libvirtd service is running otherwise start it
+start_libvirtd_service() {
+ echo "${blue}Checking whether libvirtd service is running otherwise start it${reset}"
+ if ! sudo systemctl status libvirtd | grep -iE 'active \(running\)'; then
+ echo "${blue}starting libvirtd service${reset}"
+ systemctl start libvirtd
+ if ! sudo systemctl status libvirtd | grep -iE 'active \(running\)'; then
+ echo "${red}Failed to start libvirtd service!${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+
+#Check whether interface exists
+check_interface_exists() {
+ if [ -z $1 ]; then
+ echo "${red}Cannot check whether interface exists! No interface specified!${reset}"
+ exit 1
+ fi
+ local interface=$1
+ #Check whether interface exists
+ echo "${blue}Checking whether interface ${interface} exists${reset}"
+ if ! ip link show ${interface}; then
+ echo "${red}Interface ${interface} does not exists!${reset}"
+ exit 1
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+#Check whether interface is UP
+check_interface_up() {
+ if [ -z $1 ]; then
+ echo "${red}Cannot check whether interface is UP! No interface specified!${reset}"
+ exit 1
+ fi
+ local interface=$1
+
+ #Check whether interface is UP
+ echo "${blue}Checking whether interface ${interface} is UP${reset}"
+ link_state=$(ip link show ${interface} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} != 'UP' ]]; then
+ echo "${blue}${interface} state is ${link_state}. Bringing it UP!${reset}"
+ ip link set dev ${interface} up
+ sleep 5
+ link_state=$(ip link show ${interface} | grep -oP 'state \K[^ ]+')
+ if [[ ${link_state} == 'DOWN' ]]; then
+ echo "${red}Could not bring UP interface ${interface} link state is ${link_state}${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+#Create VLAN interface
+create_vlan_interface() {
+ if [ -z $1 ]; then
+ echo "${red}Cannot create VLAN interface. No base interface specified!${reset}"
+ exit 1
+ fi
+ if [ -z $2 ]; then
+ echo "${red}Cannot create VLAN interface. No VLAN ID specified!${reset}"
+ exit 1
+ fi
+
+ local base_interface=$1
+ local vid=$2
+ local interface="${base_interface}.${vid}"
+
+ echo "${blue}Checking whether VLAN ${vid} interface ${interface} exists, otherwise create it${reset}"
+ if ! ip link show ${interface}; then
+ echo "${blue}Creating VLAN ${vid} interface ${interface}${reset}"
+ ip link add link ${base_interface} name ${interface} type vlan id ${vid}
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ #Check whether VLAN interface is UP
+ check_interface_up ${interface}
+}
+
+###setup PXE Bridge
+setup_pxe_bridge() {
+ pxe_vid=0
+ pxe_interface="${private_interface}.${pxe_vid}"
+ #Check whether VLAN 0 (PXE) interface exists, otherwise create it
+ create_vlan_interface ${private_interface} ${pxe_vid}
+
+ #Check whether PXE bridge exists
+ echo "${blue}Checking whether PXE bridge ${pxe_bridge} exists${reset}"
+ if brctl show ${pxe_bridge} 2>&1 | grep 'No such device'; then
+ echo "${blue}Creating PXE bridge ${pxe_bridge}${reset}"
+ brctl addbr ${pxe_bridge}
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ #Add VLAN 0 (PXE) interface to PXE bridge
+ echo "${blue}Checking whether VLAN 0 (PXE) interface ${pxe_interface} is added to PXE bridge ${pxe_bridge} exists${reset}"
+ if ! brctl show ${pxe_bridge} 2>&1 | grep ${pxe_interface}; then
+ echo "${blue}Adding VLAN 0 (PXE) interface ${pxe_interface} to PXE bridge ${pxe_bridge}${reset}"
+ brctl addif ${pxe_bridge} ${pxe_interface}
+ if ! brctl show ${pxe_bridge} 2>&1 | grep ${pxe_interface}; then
+ echo "${red}Could not add VLAN 0 (PXE) interface ${pxe_interface} to PXE bridge ${pxe_bridge}${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ #Check whether PXE bridge is UP
+ check_interface_up ${pxe_bridge}
+
+ #Add Fuel Gateway IP Address to PXE bridge
+ echo "${blue}Checking whether Fuel Gateway IP Address ${fuel_gw_ip} is assigned to PXE bridge ${pxe_bridge}${reset}"
+ if ! ip addr show ${pxe_bridge} | grep ${fuel_gw_ip}; then
+ echo "${blue}Adding Fuel Gateway IP Address ${fuel_gw_ip} to PXE bridge ${pxe_bridge}${reset}"
+ sudo ip addr add ${fuel_gw_ip} dev ${pxe_bridge}
+ if ! ip addr show ${pxe_bridge} | grep ${fuel_gw_ip}; then
+ echo "${red}Could not add Fuel Gateway IP Address ${fuel_gw_ip} to PXE bridge ${pxe_bridge}${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###check whether access to public network is granted
+check_access_enabled_to_public_network() {
+ #Check whether IP forwarding is enabled
+ echo "${blue}Checking whether IP Forwarding is enabled ${reset}"
+ if ! sysctl net.ipv4.ip_forward | grep "net.ipv4.ip_forward = 1"; then
+ sysctl -w net.ipv4.ip_forward=1
+ if ! sysctl net.ipv4.ip_forward | grep "net.ipv4.ip_forward = 1"; then
+ echo "${red}IP Forwarding could not be enabled!${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ echo "${blue}Checking whether access is granted to public network through interface ${public_interface}${reset}"
+ if ! sudo iptables -t nat -L POSTROUTING -v | grep "MASQUERADE.*${public_interface}.*anywhere.*anywhere"; then
+ echo "${blue}Enable access to public network through interface ${public_interface}${reset}"
+ iptables -t nat -A POSTROUTING -o ${public_interface} -j MASQUERADE
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###setup Openstack Management Interface
+create_openstack_management_interface() {
+ #Check whether Openstack Management interface exists, otherwise create it
+ create_vlan_interface ${private_interface} ${management_vid}
+
+ echo "${blue}Moving IP addresses from interface ${private_interface} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ private_interface_ip_addr_list=$(ip addr show ${private_interface} | grep -oP 'inet \K[^ ]+')
+ if [[ ! -z ${private_interface_ip_addr_list} ]]; then
+ echo -e "${blue}Found IP addresses on interface ${private_interface}:\n${private_interface_ip_addr_list}${reset}"
+ for private_interface_ip_addr in ${private_interface_ip_addr_list}
+ do
+ echo "${blue}Removing IP address ${private_interface_ip_addr} from interface ${private_interface}${reset}"
+ ip addr del ${private_interface_ip_addr} dev ${private_interface}
+ if ip addr show ${private_interface} | grep ${private_interface_ip_addr}; then
+ echo "${red}Could not remove IP address ${private_interface_ip_addr} from interface ${private_interface}${reset}"
+ exit 1
+ fi
+ if ! ip addr show ${management_interface} | grep ${private_interface_ip_addr}; then
+ echo "${blue}Adding IP address ${private_interface_ip_addr} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ ip addr add ${private_interface_ip_addr} dev ${management_interface}
+ if ! ip addr show ${management_interface} | grep ${private_interface_ip_addr}; then
+ echo "${red}Could not set IP address ${private_interface_ip_addr} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ exit 1
+ fi
+ else
+ echo "${blue}VLAN ${management_vid} interface ${management_interface} already has assigned to itself this IP address ${private_interface_ip_addr}${reset}"
+ fi
+ done
+ else
+ echo "${red}No IP Address is assigned to interface ${private_interface}, there isn't any IP address to move to interface ${management_interface}${reset}"
+ fi
+}
+
+##END FUNCTIONS
+
+main() {
+ install_qemu_kvm
+ install_libvirt
+ load_kvm_kernel_mod
+ start_libvirtd_service
+ check_interface_exists ${private_interface}
+ check_interface_up ${private_interface}
+ check_interface_exists ${public_interface}
+ check_interface_up ${public_interface}
+ setup_pxe_bridge
+ check_access_enabled_to_public_network
+ create_openstack_management_interface
+}
+
+main "$@"