From 7934db1d080e53d4a72ce593f6ab51cd949f61e6 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: May 24 2018 16:35:01 +0000 Subject: qcow2: Pick random port in range I'm working changing rpm-ostree to spawn VMs in parallel, and currently this races because we release the socket, then start qemu. I have a plan for a reliable fix, but even with that let's use a random port since it makes collissions a lot less likely. --- diff --git a/inventory/standard-inventory-qcow2 b/inventory/standard-inventory-qcow2 index 10cfd3b..bd9f725 100755 --- a/inventory/standard-inventory-qcow2 +++ b/inventory/standard-inventory-qcow2 @@ -8,6 +8,7 @@ import shutil import shlex import signal import multiprocessing +import random import socket import subprocess import sys @@ -105,7 +106,8 @@ def inv_list(subjects): def start_qemu(image, cloudinit, log, portrange=(2222, 5555)): - for port in range(*portrange): + for _ in range(10): + port = random.randint(*portrange) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: