Move virsh calls to generic container

Relates-To: #517
Change-Id: I96178dfb9addbe76b8897bbe4cd58f150563b81a
This commit is contained in:
Vladislav Kuzmin 2021-04-13 15:53:18 +04:00
parent a7cbd6bddc
commit e88a5c5c1f
9 changed files with 136 additions and 17 deletions

View File

@ -7,3 +7,5 @@ resources:
- wait_pods
- pause_bmh
- wait_cluster
- virsh-eject-cdrom-images
- virsh-destroy-vms

View File

@ -0,0 +1,6 @@
configMapGenerator:
- name: virsh-destroy-vms
options:
disableNameSuffixHash: true
files:
- script=virsh_destroy_vms.sh

View File

@ -0,0 +1,27 @@
#!/bin/sh
# Licensed 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 -ex
EPHEMERAL_DOMAIN_NAME="air-ephemeral"
if type "virsh" > /dev/null; then
for vm in $(virsh list --all --name --state-running |grep ${EPHEMERAL_DOMAIN_NAME})
do
echo "Stop ephemeral node '$vm'" 1>&2
virsh destroy $vm 1>&2
done
else
echo "Can't find virsh" 1>&2
fi

View File

@ -0,0 +1,6 @@
configMapGenerator:
- name: virsh-eject-cdrom-images
options:
disableNameSuffixHash: true
files:
- script=virsh_eject_cdrom_images.sh

View File

@ -0,0 +1,30 @@
#!/bin/sh
# Licensed 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 -ex
EPHEMERAL_DOMAIN_NAME="air-ephemeral"
if type "virsh" > /dev/null; then
echo "Ensure all cdrom images are ejected." 1>&2
for vm in $(virsh list --all --name |grep -v ${EPHEMERAL_DOMAIN_NAME})
do
virsh domblklist $vm |
awk 'NF==2 {print $1}' |
grep -v Target |
xargs -I{} virsh change-media $vm {} --eject || : 1>&2
done
else
echo "Can't find virsh" 1>&2
fi

View File

@ -423,3 +423,40 @@ configRef:
kind: ConfigMap
name: kubectl-wait-cluster
apiVersion: v1
---
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
metadata:
name: virsh-eject-cdrom-images
labels:
airshipit.org/deploy-k8s: "false"
spec:
image: quay.io/airshipit/toolbox-virsh:latest
hostNetwork: true
mounts:
- type: bind
src: /var/run/libvirt/libvirt-sock
dst: /var/run/libvirt/libvirt-sock
configRef:
kind: ConfigMap
name: virsh-eject-cdrom-images
apiVersion: v1
---
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
metadata:
name: virsh-destroy-vms
labels:
airshipit.org/deploy-k8s: "false"
spec:
image: quay.io/airshipit/toolbox-virsh:latest
hostNetwork: true
mounts:
- type: bind
src: /var/run/libvirt/libvirt-sock
dst: /var/run/libvirt/libvirt-sock
configRef:
kind: ConfigMap
name: virsh-destroy-vms
apiVersion: v1

View File

@ -390,3 +390,23 @@ config:
kind: GenericContainer
name: kubectl-wait-cluster
documentEntryPoint: ephemeral/controlplane
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
metadata:
name: virsh-eject-cdrom-images
config:
executorRef:
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
name: virsh-eject-cdrom-images
---
apiVersion: airshipit.org/v1alpha1
kind: Phase
metadata:
name: virsh-destroy-vms
config:
executorRef:
apiVersion: airshipit.org/v1alpha1
kind: GenericContainer
name: virsh-destroy-vms

View File

@ -18,16 +18,10 @@ EPHEMERAL_DOMAIN_NAME="air-ephemeral"
# TODO (dukov) this is needed due to sushy tools inserts cdrom image to
# all vms. This can be removed once sushy tool is fixed
if type "virsh" > /dev/null; then
echo "Ensure all cdrom images are ejected."
for vm in $(sudo virsh list --all --name |grep -v ${EPHEMERAL_DOMAIN_NAME})
do
sudo virsh domblklist $vm |
awk 'NF==2 {print $1}' |
grep -v Target |
xargs -I{} sudo virsh change-media $vm {} --eject || :
done
fi
# Scripts for this phase placed in manifests/function/phase-helpers/virsh-eject-cdrom-images/
# To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap`
# and find ConfigMap with name virsh-eject-cdrom-images
airshipctl phase run virsh-eject-cdrom-images --debug
echo "Create target k8s cluster resources"
airshipctl phase run controlplane-ephemeral --debug

View File

@ -22,13 +22,10 @@ WORKER_NODE=${WORKER_NODE:-"node03"}
EPHEMERAL_DOMAIN_NAME="air-ephemeral"
# all vms. This can be removed once sushy tool is fixed
if type "virsh" > /dev/null; then
for vm in $(sudo virsh list --all --name --state-running |grep ${EPHEMERAL_DOMAIN_NAME})
do
echo "Stop ephemeral node '$vm'"
sudo virsh destroy $vm
done
fi
# Scripts for this phase placed in manifests/function/phase-helpers/virsh-destroy-vms/
# To get ConfigMap for this phase, execute `airshipctl phase render --source config -k ConfigMap`
# and find ConfigMap with name virsh-destroy-vms
airshipctl phase run virsh-destroy-vms --debug
node_timeout () {
end=$(($(date +%s) + $TIMEOUT))