CI: adding much needed lock mechanism when creating VM.
-- should prevent VM-creation crashes during test stages Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
+13
-6
@@ -94,15 +94,22 @@ function build_on_vm {
|
|||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
|
echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
|
acquire_vm_create_lock
|
||||||
uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
|
uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
|
||||||
|
echo "Waiting for VM to be started"
|
||||||
|
uvt-kvm wait $VM_NAME --insecure
|
||||||
|
|
||||||
|
VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
|
||||||
|
echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
|
||||||
|
release_vm_create_lock
|
||||||
|
else
|
||||||
|
echo "Waiting for VM to be started"
|
||||||
|
uvt-kvm wait $VM_NAME --insecure
|
||||||
|
|
||||||
|
VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
|
||||||
|
echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Waiting for VM to be started"
|
|
||||||
uvt-kvm wait $VM_NAME --insecure
|
|
||||||
|
|
||||||
VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
|
|
||||||
echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
|
|
||||||
|
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
echo "Copying GIT repo into VM ($VM_NAME)"
|
echo "Copying GIT repo into VM ($VM_NAME)"
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
|
|||||||
@@ -49,6 +49,35 @@ function create_usage {
|
|||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function acquire_vm_create_lock {
|
||||||
|
local FlockFile="/tmp/vmclone.lck"
|
||||||
|
local unlocked="0"
|
||||||
|
touch ${FlockFile} 2>/dev/null
|
||||||
|
if [[ $? -ne 0 ]]
|
||||||
|
then
|
||||||
|
echo "Cannot access lock file ${FlockFile}"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
while [ $unlocked -eq 0 ]
|
||||||
|
do
|
||||||
|
exec 5>${FlockFile}
|
||||||
|
flock -nx 5
|
||||||
|
if [[ $? -ne 0 ]]
|
||||||
|
then
|
||||||
|
echo "Another instance of VM creation is running"
|
||||||
|
sleep 10
|
||||||
|
else
|
||||||
|
unlocked="1"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
chmod 666 ${FlockFile} 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
function release_vm_create_lock {
|
||||||
|
local FlockFile="/tmp/vmclone.lck"
|
||||||
|
rm -Rf ${FlockFile}
|
||||||
|
}
|
||||||
|
|
||||||
function create_vm {
|
function create_vm {
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
echo "OAI CI VM script"
|
echo "OAI CI VM script"
|
||||||
@@ -60,10 +89,12 @@ function create_vm {
|
|||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
|
echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
|
acquire_vm_create_lock
|
||||||
uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
|
uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml
|
||||||
echo "Waiting for VM to be started"
|
echo "Waiting for VM to be started"
|
||||||
uvt-kvm wait $VM_NAME --insecure
|
uvt-kvm wait $VM_NAME --insecure
|
||||||
|
|
||||||
VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
|
VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
|
||||||
echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
|
echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
|
||||||
|
release_vm_create_lock
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,11 +317,18 @@ function install_epc_on_vm {
|
|||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
echo "Creating test EPC VM ($LOC_EPC_VM_NAME) on Ubuntu Cloud Image base"
|
echo "Creating test EPC VM ($LOC_EPC_VM_NAME) on Ubuntu Cloud Image base"
|
||||||
echo "############################################################"
|
echo "############################################################"
|
||||||
|
acquire_vm_create_lock
|
||||||
uvt-kvm create $LOC_EPC_VM_NAME release=xenial --unsafe-caching
|
uvt-kvm create $LOC_EPC_VM_NAME release=xenial --unsafe-caching
|
||||||
|
echo "Waiting for VM to be started"
|
||||||
|
uvt-kvm wait $LOC_EPC_VM_NAME --insecure
|
||||||
|
release_vm_create_lock
|
||||||
|
else
|
||||||
|
echo "Waiting for VM to be started"
|
||||||
|
uvt-kvm wait $LOC_EPC_VM_NAME --insecure
|
||||||
fi
|
fi
|
||||||
|
|
||||||
uvt-kvm wait $LOC_EPC_VM_NAME --insecure
|
|
||||||
local LOC_EPC_VM_IP_ADDR=`uvt-kvm ip $LOC_EPC_VM_NAME`
|
local LOC_EPC_VM_IP_ADDR=`uvt-kvm ip $LOC_EPC_VM_NAME`
|
||||||
|
|
||||||
echo "$LOC_EPC_VM_NAME has for IP addr = $LOC_EPC_VM_IP_ADDR"
|
echo "$LOC_EPC_VM_NAME has for IP addr = $LOC_EPC_VM_IP_ADDR"
|
||||||
scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
|
scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user