Skip to content

Commit 0e3b309

Browse files
committed
[edpm_compute]Make the addition NVME and IGB optional
The commit bc9ec7c added two emulated NVME disks for virtual computes. It turned out that some folks uses old enough qemu that it is not supported (debian sid has new enough qemu). So this patch adds an env var to conditionally enable the extra devices. The following will create the compute VMs with the extra devs: EDPM_EMULATED_NVME_ENABLED=true \ EDPM_EMULATED_SRIOV_NIC_ENABLED=true \ make edpm_compute Also extended the edpm_compute_cleanup target to remove the backing files of these NVMe devs.
1 parent bc9ec7c commit 0e3b309

File tree

3 files changed

+63
-28
lines changed

3 files changed

+63
-28
lines changed

devsetup/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@ Deploy a compute node VM:
116116
make edpm_compute
117117
```
118118

119+
You can deploy a compute node VM with additional devices:
120+
```
121+
EDPM_EMULATED_NVME_ENABLED=true \
122+
EDPM_EMULATED_SRIOV_NIC_ENABLED=true \
123+
make edpm_compute
124+
```
125+
119126
Execute the edpm_deploy step:
120127
```
121128
pushd ..

devsetup/scripts/edpm-node-cleanup.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ STANDALONE=${STANDALONE:-false}
3333
virsh destroy ${EDPM_COMPUTE_NAME} || :
3434
virsh undefine --snapshots-metadata --remove-all-storage ${EDPM_COMPUTE_NAME} || :
3535
${CLEANUP_DIR_CMD} "${CRC_POOL}/${EDPM_COMPUTE_NAME}.qcow2"
36+
${CLEANUP_DIR_CMD} "${CRC_POOL}/${EDPM_COMPUTE_NAME}-nvme1.qcow2"
37+
${CLEANUP_DIR_CMD} "${CRC_POOL}/${EDPM_COMPUTE_NAME}-nvme2.qcow2"
3638

3739
chassis_uuid=$(run_ovn_ctl_command SB --format=csv --data=bare --columns=name,hostname list chassis | awk -F "," "/,${EDPM_COMPUTE_NAME}/{ print \$1 }")
3840

devsetup/scripts/gen-edpm-node-common.sh

Lines changed: 54 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,61 @@ BASE_DISK_FILENAME=${BASE_DISK_FILENAME:-"$(basename ${EDPM_IMAGE_URL})"}
5252
DISK_FILENAME=${DISK_FILENAME:-"edpm-${EDPM_SERVER_ROLE}-${EDPM_COMPUTE_SUFFIX}.qcow2"}
5353
DISK_FILEPATH=${DISK_FILEPATH:-"${CRC_POOL}/${DISK_FILENAME}"}
5454

55-
NVME1_FILENAME=${NVME1_FILENAME:-"edpm-${EDPM_SERVER_ROLE}-${EDPM_COMPUTE_SUFFIX}-nvme1.qcow2"}
56-
NVME1_FILEPATH=${NVME1_FILEPATH:-"${CRC_POOL}/${NVME1_FILENAME}"}
55+
EDPM_EMULATED_NVME_ENABLED=${EDPM_EMULATED_NVME_ENABLED:-"false"}
56+
NVME_XML=""
57+
58+
if [ $EDPM_EMULATED_NVME_ENABLED == "true" ] ; then
59+
NVME1_FILENAME=${NVME1_FILENAME:-"edpm-${EDPM_SERVER_ROLE}-${EDPM_COMPUTE_SUFFIX}-nvme1.qcow2"}
60+
NVME1_FILEPATH=${NVME1_FILEPATH:-"${CRC_POOL}/${NVME1_FILENAME}"}
61+
62+
qemu-img create -f qcow2 ${NVME1_FILEPATH} 1G
63+
chmod og+w ${NVME1_FILEPATH}
64+
# intentionally ignore errors on non selinux enabled systems
65+
chcon -t svirt_image_t ${NVME1_FILEPATH} | true
66+
67+
NVME2_FILENAME=${NVME2_FILENAME:-"edpm-${EDPM_SERVER_ROLE}-${EDPM_COMPUTE_SUFFIX}-nvme2.qcow2"}
68+
NVME2_FILEPATH=${NVME2_FILEPATH:-"${CRC_POOL}/${NVME2_FILENAME}"}
69+
70+
qemu-img create -f qcow2 ${NVME2_FILEPATH} 1G
71+
chmod og+w ${NVME2_FILEPATH}
72+
# intentionally ignore errors on non selinux enabled systems
73+
chcon -t svirt_image_t ${NVME2_FILEPATH} | true
74+
75+
NVME_XML=$(cat <<EOF
76+
<qemu:commandline>
77+
<qemu:arg value='-drive'/>
78+
<qemu:arg value='file=${NVME1_FILEPATH},format=qcow2,if=none,id=NVME1'/>
79+
<qemu:arg value='-device'/>
80+
<qemu:arg value='nvme,drive=NVME1,serial=nvme-1,bus=pcie.0,addr=0x8'/>
81+
</qemu:commandline>
82+
<qemu:commandline>
83+
<qemu:arg value='-drive'/>
84+
<qemu:arg value='file=${NVME2_FILEPATH},format=qcow2,if=none,id=NVME2'/>
85+
<qemu:arg value='-device'/>
86+
<qemu:arg value='nvme,drive=NVME2,serial=nvme-2,bus=pcie.0,addr=0x9'/>
87+
</qemu:commandline>
88+
EOF
89+
)
90+
fi
91+
92+
EDPM_EMULATED_SRIOV_NIC_ENABLED=${EDPM_EMULATED_SRIOV_NIC_ENABLED:-"false"}
93+
IGB_XML=""
94+
if [ $EDPM_EMULATED_SRIOV_NIC_ENABLED == "true" ] ; then
95+
IGB_XML=$(cat <<EOF
96+
<interface type='network'>
97+
<source ${EDPM_COMPUTE_NETWORK_TYPE}='${EDPM_COMPUTE_NETWORK}'/>
98+
<model type='igb'/>
99+
</interface>
100+
<interface type='network'>
101+
<source ${EDPM_COMPUTE_NETWORK_TYPE}='${EDPM_COMPUTE_NETWORK}'/>
102+
<model type='igb'/>
103+
</interface>
104+
EOF
105+
)
106+
fi
57107

58-
qemu-img create -f qcow2 ${NVME1_FILEPATH} 1G
59-
chmod og+w ${NVME1_FILEPATH}
60108

61-
NVME2_FILENAME=${NVME2_FILENAME:-"edpm-${EDPM_SERVER_ROLE}-${EDPM_COMPUTE_SUFFIX}-nvme2.qcow2"}
62-
NVME2_FILEPATH=${NVME2_FILEPATH:-"${CRC_POOL}/${NVME2_FILENAME}"}
63109

64-
qemu-img create -f qcow2 ${NVME2_FILEPATH} 1G
65-
chmod og+w ${NVME2_FILEPATH}
66110

67111
SSH_PUBLIC_KEY=${SSH_PUBLIC_KEY:-"${OUTPUT_DIR}/ansibleee-ssh-key-id_rsa.pub"}
68112
MAC_ADDRESS=${MAC_ADDRESS:-"$(echo -n 52:54:00; dd bs=1 count=3 if=/dev/random 2>/dev/null | hexdump -v -e '/1 "-%02X"' | tr '-' ':')"}
@@ -167,14 +211,7 @@ cat <<EOF >${OUTPUT_DIR}/${EDPM_COMPUTE_NAME}.xml
167211
<model type='virtio'/>
168212
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
169213
</interface>
170-
<interface type='network'>
171-
<source ${EDPM_COMPUTE_NETWORK_TYPE}='${EDPM_COMPUTE_NETWORK}'/>
172-
<model type='igb'/>
173-
</interface>
174-
<interface type='network'>
175-
<source ${EDPM_COMPUTE_NETWORK_TYPE}='${EDPM_COMPUTE_NETWORK}'/>
176-
<model type='igb'/>
177-
</interface>
214+
${IGB_XML}
178215
<serial type='pty'>
179216
<target port='0'/>
180217
</serial>
@@ -200,18 +237,7 @@ cat <<EOF >${OUTPUT_DIR}/${EDPM_COMPUTE_NAME}.xml
200237
<driver intremap='on' iotlb='on'/>
201238
</iommu>
202239
</devices>
203-
<qemu:commandline>
204-
<qemu:arg value='-drive'/>
205-
<qemu:arg value='file=${NVME1_FILEPATH},format=qcow2,if=none,id=NVME1'/>
206-
<qemu:arg value='-device'/>
207-
<qemu:arg value='nvme,drive=NVME1,serial=nvme-1,bus=pcie.0,addr=0x8'/>
208-
</qemu:commandline>
209-
<qemu:commandline>
210-
<qemu:arg value='-drive'/>
211-
<qemu:arg value='file=${NVME2_FILEPATH},format=qcow2,if=none,id=NVME2'/>
212-
<qemu:arg value='-device'/>
213-
<qemu:arg value='nvme,drive=NVME2,serial=nvme-2,bus=pcie.0,addr=0x9'/>
214-
</qemu:commandline>
240+
${NVME_XML}
215241
</domain>
216242
EOF
217243

0 commit comments

Comments
 (0)