From 12d490432fd4a03e89b0c69ce90ccc0504fc65f8 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Wed, 14 Aug 2019 12:57:58 +0200 Subject: [PATCH] copr: backend: image preparation scripting --- .../backend/files/copr-image-delete-os.sh | 11 ++++ .../files/copr-image-fixup-snapshot-os.sh | 11 ++++ .../backend/files/copr-image-prepare-os.sh | 53 +++++++++++++++++++ roles/copr/backend/tasks/main.yml | 11 ++++ 4 files changed, 86 insertions(+) create mode 100755 roles/copr/backend/files/copr-image-delete-os.sh create mode 100755 roles/copr/backend/files/copr-image-fixup-snapshot-os.sh create mode 100755 roles/copr/backend/files/copr-image-prepare-os.sh diff --git a/roles/copr/backend/files/copr-image-delete-os.sh b/roles/copr/backend/files/copr-image-delete-os.sh new file mode 100755 index 0000000000..f2055764c9 --- /dev/null +++ b/roles/copr/backend/files/copr-image-delete-os.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +. /home/copr/cloud/keystonerc_proper_tenant + +set +x + +openstack image set \ + --unprotected \ + "$1" + +openstack image delete "$1" diff --git a/roles/copr/backend/files/copr-image-fixup-snapshot-os.sh b/roles/copr/backend/files/copr-image-fixup-snapshot-os.sh new file mode 100755 index 0000000000..94942bb51b --- /dev/null +++ b/roles/copr/backend/files/copr-image-fixup-snapshot-os.sh @@ -0,0 +1,11 @@ +#! /bin/bash + +. /home/copr/cloud/keystonerc_proper_tenant + +set +x + +openstack image set \ + --public \ + --protected \ + --property hw_rng_model=virtio \ + "$1" diff --git a/roles/copr/backend/files/copr-image-prepare-os.sh b/roles/copr/backend/files/copr-image-prepare-os.sh new file mode 100755 index 0000000000..826b19e5e1 --- /dev/null +++ b/roles/copr/backend/files/copr-image-prepare-os.sh @@ -0,0 +1,53 @@ +#! /bin/bash + +. /home/copr/cloud/keystonerc_proper_tenant + +set -e + +arch=$1 + +die() { echo "$*" >&2 ; exit 1 ; } + +case $arch in + ppc64le) playbook=/home/copr/provision/builderpb_nova_ppc64le.yml ;; + x86_64) playbook=/home/copr/provision/builderpb_nova.yml ;; + *) die "bad architecture '$arch'" ;; +esac + +logfile="/tmp/prepare-image-os-$arch.log" + +ansible_options=( -e prepare_base_image=1 ) +test -z "$2" || ansible_options+=( -e image_name="$2" ) + +ansible-playbook "$playbook" "${ansible_options[@]}" |& tee "$logfile" + +vm_name=$(sed -n 's/.*vm_name=\(\w\+\).*/\1/p' "$logfile" | head -1) +test -n "$vm_name" +ip=$(sed -n 's/.*VM_IP=\([0-9\.]\+\).*/\1/p' "$logfile" | head -1) +test -n "$ip" + +fedora=$(ssh "root@$ip" 'rpm --eval %fedora') + +new_volume_name="copr-builder-$arch-f$fedora-$(date +"%Y%m%d_%H%M%S")" + +# we can not just do +# $ nova-3 image-create "$vm_name" "$new_volume_name" --poll +# because it throws error: +# ERROR (ClientException): The server has either erred or is incapable of +# performing the requested operation. (HTTP 500) (Request-ID:...) + +nova-3 stop "$vm_name" + +cat <