@@ -14,9 +14,6 @@ function usage {
1414 echo
1515}
1616
17- MY_TMP_DIR=" $( mktemp -d) "
18- trap ' rm -rf -- "$MY_TMP_DIR"' EXIT
19-
2017NODE_NAME_PREFIX=${NODE_NAME_PREFIX:- " crc-bmaas" }
2118NAMESPACE=${SUSHY_EMULATOR_NAMESPACE:- " sushy-emulator" }
2219DRIVER=${SUSHY_EMULATOR_DRIVER:- " libvirt" }
@@ -27,6 +24,9 @@ IMAGE=${SUSHY_EMULATOR_IMAGE:-"quay.io/metal3-io/sushy-tools:latest"}
2724CRC_NETWORK_NAME=${CRC_NETWORK_NAME:- crc}
2825BM_IPV6=${BM_IPV6:- false}
2926BM_IPV4=${BM_IPV4:- false}
27+ SUSHY_DIR=${SUSHY_DIR:- " ${DEPLOY_DIR} /sushy" }
28+
29+ mkdir -p ${SUSHY_DIR}
3030
3131
3232if [ $DRIVER = " libvirt" ]; then
@@ -49,7 +49,12 @@ if [ $DRIVER = "libvirt" ]; then
4949 LIBVIRT_URI=" 'qemu+ssh://${LIBVIRT_USER} @${LIBVIRT_IP_ADDRESS} /system${LIBVIRT_SOCKET} '"
5050 SUSHY_EMULATOR_LISTEN_IP=" '0.0.0.0'"
5151 fi
52- INSTANCES=$( virsh --connect=qemu:///system list --all --uuid --name | grep " ${NODE_NAME_PREFIX} " | awk ' BEGIN{ printf "[" }; { printf "%s\"%s\"", sep, $1, sep=","}; END{ printf "]" }' )
52+ BMHS=$( oc get -o name bmh | cut -d/ -f2)
53+ LIBVIRT_INSTANCES=$( virsh --connect=qemu:///system list --all --uuid --name | grep " ${NODE_NAME_PREFIX} " | awk ' {print $1}' )
54+ for bmh in ${BMHS} ; do
55+ LIBVIRT_INSTANCES=" ${LIBVIRT_INSTANCES} $( virsh --connect=qemu:///system domuuid ${bmh} ) "
56+ done
57+ INSTANCES=$( echo ${LIBVIRT_INSTANCES} | awk ' BEGIN{ printf "[" }; { printf "%s\"%s\"", sep, $1, sep=","}; END{ printf "]" }' )
5358 EMULATOR_OS_CLOUD=" None"
5459elif [ $DRIVER = " openstack" ]; then
5560 OS_CLIENT_CONFIG_FILE=${SUSHY_EMULATOR_OS_CLIENT_CONFIG_FILE:-/ etc/ openstack/ clouds.yaml}
6065
6166function create_sushy_emulator_namespace {
6267 echo " Creating namespace ${NAMESPACE} "
63- cat << EOF > "${MY_TMP_DIR } /namespace.yaml"
68+ cat << EOF > "${SUSHY_DIR } /namespace.yaml"
6469apiVersion: v1
6570kind: Namespace
6671metadata:
6772 name: ${NAMESPACE}
6873EOF
6974
70- # cat ${MY_TMP_DIR }/namespace.yaml
71- oc apply -f " ${MY_TMP_DIR } /namespace.yaml"
75+ # cat ${SUSHY_DIR }/namespace.yaml
76+ oc apply -f " ${SUSHY_DIR } /namespace.yaml"
7277}
7378
7479function create_sushy_emulator_user {
@@ -88,28 +93,39 @@ function generate_ssh_keypair {
8893 echo " PANIC, unable to get ${LIBVIRT_USER} home directory."
8994 exit 1
9095 fi
91- ssh-keygen -q -f " ${MY_TMP_DIR} /${SSH_KEY_FILE} " -N " " -t " ${SSH_ALGORITHM} " -b " ${SSH_KEY_SIZE} "
96+ if [ ! -f " ${SUSHY_DIR} /${SSH_KEY_FILE} " ]; then
97+ ssh-keygen -q -f " ${SUSHY_DIR} /${SSH_KEY_FILE} " -N " " -t " ${SSH_ALGORITHM} " -b " ${SSH_KEY_SIZE} "
98+ else
99+ echo " ${SUSHY_DIR} /${SSH_KEY_FILE} already exists, not re-generating"
100+ fi
92101 sudo mkdir -p " ${homedir} /.ssh"
93- sudo cp " ${MY_TMP_DIR } /${SSH_KEY_FILE} " " ${homedir} /.ssh/${SSH_KEY_FILE} "
94- sudo cp " ${MY_TMP_DIR } /${SSH_KEY_FILE} .pub" " ${homedir} /.ssh/${SSH_KEY_FILE} .pub"
102+ sudo cp " ${SUSHY_DIR } /${SSH_KEY_FILE} " " ${homedir} /.ssh/${SSH_KEY_FILE} "
103+ sudo cp " ${SUSHY_DIR } /${SSH_KEY_FILE} .pub" " ${homedir} /.ssh/${SSH_KEY_FILE} .pub"
95104 sudo touch " ${homedir} /.ssh/authorized_keys"
96- cat " ${MY_TMP_DIR } /${SSH_KEY_FILE} .pub" | sudo tee " ${homedir} /.ssh/authorized_keys" > /dev/null
105+ cat " ${SUSHY_DIR } /${SSH_KEY_FILE} .pub" | sudo tee " ${homedir} /.ssh/authorized_keys" > /dev/null
97106 sudo chown -R " ${LIBVIRT_USER} " :" ${LIBVIRT_USER} " " ${homedir} /.ssh"
98107 sudo chmod 700 " ${homedir} /.ssh"
99108 sudo chmod -R og-rwx " ${homedir} /.ssh"
100109}
101110
102111function create_sushy_emulator_config {
103112 echo " Creating sushy-emulator-config"
104- cat << EOF > "${MY_TMP_DIR} /config-map.yaml"
113+ local htpasswd
114+ if [ -f " ${SUSHY_DIR} /htpasswd" ]; then
115+ htpasswd=$( cat ${SUSHY_DIR} /htpasswd)
116+ else
117+ htpasswd=$( htpasswd -nbB " ${REDFISH_USERNAME} " " ${REDFISH_PASSWORD} " )
118+ echo ${htpasswd} > ${SUSHY_DIR} /htpasswd
119+ fi
120+ cat << EOF > "${SUSHY_DIR} /config-map.yaml"
105121apiVersion: v1
106122kind: ConfigMap
107123metadata:
108124 name: sushy-emulator-config
109125 namespace: ${NAMESPACE}
110126data:
111127 htpasswd: |
112- $( htpasswd -nbB " ${REDFISH_USERNAME} " " ${REDFISH_PASSWORD} " | sed ' s/^/ / ' )
128+ ${htpasswd}
113129 config: |
114130 # Listen on all local IP interfaces
115131 SUSHY_EMULATOR_LISTEN_IP = ${SUSHY_EMULATOR_LISTEN_IP}
@@ -146,24 +162,24 @@ $(htpasswd -nbB "${REDFISH_USERNAME}" "${REDFISH_PASSWORD}" | sed 's/^/ /')
146162 SUSHY_EMULATOR_ALLOWED_INSTANCES = ${INSTANCES}
147163EOF
148164
149- # cat ${MY_TMP_DIR }/config-map.yaml
150- oc apply -f " ${MY_TMP_DIR } /config-map.yaml"
165+ # cat ${SUSHY_DIR }/config-map.yaml
166+ oc apply -f " ${SUSHY_DIR } /config-map.yaml"
151167}
152168
153169function create_sushy_emulator_secret {
154170 echo " Creating sushy-emulator-secret"
155171 if [ $DRIVER = " libvirt" ]; then
156- cat << EOF > "${MY_TMP_DIR } /secret.yaml"
172+ cat << EOF > "${SUSHY_DIR } /secret.yaml"
157173apiVersion: v1
158174kind: Secret
159175metadata:
160176 name: sushy-emulator-secret
161177 namespace: ${NAMESPACE}
162178data:
163179 ssh-publickey: |
164- $( base64 < " ${MY_TMP_DIR } /${SSH_KEY_FILE} .pub" | sed ' s/^/ /' )
180+ $( base64 < " ${SUSHY_DIR } /${SSH_KEY_FILE} .pub" | sed ' s/^/ /' )
165181 ssh-privatekey: |
166- $( base64 < " ${MY_TMP_DIR } /${SSH_KEY_FILE} " | sed ' s/^/ /' )
182+ $( base64 < " ${SUSHY_DIR } /${SSH_KEY_FILE} " | sed ' s/^/ /' )
167183 ssh-known-hosts: |
168184$( ssh-keyscan -H " ${LIBVIRT_IP_ADDRESS} " | base64 | sed ' s/^/ /' )
169185---
@@ -176,7 +192,7 @@ data:
176192 openstack-clouds-yaml: ""
177193EOF
178194 elif [ $DRIVER = " openstack" ]; then
179- cat << EOF > "${MY_TMP_DIR } /secret.yaml"
195+ cat << EOF > "${SUSHY_DIR } /secret.yaml"
180196apiVersion: v1
181197kind: Secret
182198metadata:
@@ -198,13 +214,13 @@ $(cat ${OS_CLIENT_CONFIG_FILE} | base64 | sed 's/^/ /')
198214EOF
199215 fi
200216
201- # cat ${MY_TMP_DIR }/secret.yaml
202- oc apply -f " ${MY_TMP_DIR } /secret.yaml"
217+ # cat ${SUSHY_DIR }/secret.yaml
218+ oc apply -f " ${SUSHY_DIR } /secret.yaml"
203219}
204220
205221function create_sushy_emulator_pod {
206222 echo " Creating sushy-emulator pod"
207- cat << EOF > "${MY_TMP_DIR } /sushy-emulator-pod.yaml"
223+ cat << EOF > "${SUSHY_DIR } /sushy-emulator-pod.yaml"
208224---
209225apiVersion: v1
210226kind: Pod
@@ -284,13 +300,15 @@ spec:
284300 restartPolicy: OnFailure
285301EOF
286302
287- # cat ${MY_TMP_DIR}/sushy-emulator-pod.yaml
288- oc apply -f " ${MY_TMP_DIR} /sushy-emulator-pod.yaml"
303+ # cat ${SUSHY_DIR}/sushy-emulator-pod.yaml
304+ # delete existing pod to force reloading of any config changes
305+ oc delete -n sushy-emulator --wait pod sushy-emulator
306+ oc apply -f " ${SUSHY_DIR} /sushy-emulator-pod.yaml"
289307}
290308
291309function create_sushy_emulator_service {
292310 echo " Creating sushy-emulator-service"
293- cat << EOF > "${MY_TMP_DIR } /sushy-emulator-service.yaml"
311+ cat << EOF > "${SUSHY_DIR } /sushy-emulator-service.yaml"
294312---
295313apiVersion: v1
296314kind: Service
@@ -308,13 +326,13 @@ spec:
308326 targetPort: 8000
309327EOF
310328
311- # cat ${MY_TMP_DIR }/sushy-emulator-service.yaml
312- oc apply -f " ${MY_TMP_DIR } /sushy-emulator-service.yaml"
329+ # cat ${SUSHY_DIR }/sushy-emulator-service.yaml
330+ oc apply -f " ${SUSHY_DIR } /sushy-emulator-service.yaml"
313331}
314332
315333function create_sushy_emulator_route {
316334 echo " Creating sushy-emulator-route"
317- cat << EOF > "${MY_TMP_DIR } /sushy-emulator-route.yaml"
335+ cat << EOF > "${SUSHY_DIR } /sushy-emulator-route.yaml"
318336---
319337apiVersion: route.openshift.io/v1
320338kind: Route
@@ -332,8 +350,8 @@ spec:
332350 name: sushy-emulator-service
333351EOF
334352
335- # cat ${MY_TMP_DIR }/sushy-emulator-route.yaml
336- oc apply -f " ${MY_TMP_DIR } /sushy-emulator-route.yaml"
353+ # cat ${SUSHY_DIR }/sushy-emulator-route.yaml
354+ oc apply -f " ${SUSHY_DIR } /sushy-emulator-route.yaml"
337355}
338356
339357function create {
@@ -366,6 +384,8 @@ function cleanup {
366384 echo " Not deleting user ${LIBVIRT_USER} , user does not exist"
367385 fi
368386 fi
387+
388+ rm -rf ${SUSHY_DIR}
369389}
370390
371391case " $1 " in
0 commit comments