diff --git a/testcloud/domain_configuration.py b/testcloud/domain_configuration.py
index e73b680..f07bd06 100644
--- a/testcloud/domain_configuration.py
+++ b/testcloud/domain_configuration.py
@@ -216,11 +216,11 @@ def generate(self):
class NetworkConfiguration:
- mac_address: str
+ mac_address: Optional[str]
additional_qemu_args: list[str]
def __init__(self) -> None:
- self.mac_address = ""
+ self.mac_address = None
self.additional_qemu_args = []
def generate(self) -> str:
@@ -228,24 +228,25 @@ def generate(self) -> str:
class SystemNetworkConfiguration(NetworkConfiguration):
- def __init__(self, mac_address) -> None:
+ def __init__(self, mac_address=None) -> None:
super().__init__()
self.mac_address = mac_address
def generate(self):
+ mac = f'' if self.mac_address else ''
return """
-
+ {mac}
""".format(
- mac_address=self.mac_address,
+ mac=mac,
)
class UserNetworkConfiguration(NetworkConfiguration):
- def __init__(self, mac_address, port=6666, device_type="virtio-net-pci") -> None:
+ def __init__(self, mac_address=None, port=6666, device_type="virtio-net-pci") -> None:
super().__init__()
self.mac_address = mac_address
self.additional_qemu_args = [
@@ -256,13 +257,14 @@ def __init__(self, mac_address, port=6666, device_type="virtio-net-pci") -> None
]
def generate(self):
+ mac = f'' if self.mac_address else ''
return """
-
+ {mac}
""".format(
- mac_address=self.mac_address,
+ mac=mac,
)
@@ -325,6 +327,7 @@ class DomainConfiguration:
system_architecture: Optional[ArchitectureConfiguration]
storage_devices: list[StorageDeviceConfiguration]
network_configuration: Optional[NetworkConfiguration]
+ network_devices: list[NetworkConfiguration]
tpm_configuration: Optional[TPMConfiguration]
virtiofs_configuration: list[VIRTIOFSConfiguration]
iommu_configuration: Optional[IOMMUConfiguration]
@@ -445,7 +448,7 @@ def generate(self) -> str:
{emulator_path}
{storage_devices}
- {network_configuraton}
+ {network_configuration}
{serial_log_configuraton}
@@ -475,7 +478,7 @@ def generate(self) -> str:
system_architecture=self.system_architecture.generate(),
emulator_path=self.get_emulator(),
storage_devices=self.generate_storage_devices(),
- network_configuraton=self.generate_network_devices(),
+ network_configuration=self.generate_network_devices(),
serial_log_configuraton=self.generate_serial_log_conf(),
tpm=self.tpm_configuration.generate() if self.tpm_configuration else "",
virtiofs_head=self.generate_virtiofs_head() if self.virtiofs_configuration else "",
@@ -510,7 +513,7 @@ def _get_default_domain_conf(
desired_arch = desired_arch or platform.machine()
vcpus = vcpus or config_data.VCPUS
ram = ram or config_data.RAM
- mac_address = mac_address or util.generate_mac_address()
+ mac_address = mac_address
kvm = True if (desired_arch == platform.machine() and os.path.exists("/dev/kvm")) else False
domain_configuration = DomainConfiguration(name)
@@ -535,17 +538,15 @@ def _get_default_domain_conf(
if connection == "qemu:///system":
domain_configuration.network_devices.append(SystemNetworkConfiguration(mac_address=mac_address))
for i in range(nic_count - 1):
- mac_address = util.generate_mac_address()
- domain_configuration.network_devices.append(SystemNetworkConfiguration(mac_address=mac_address))
+ domain_configuration.network_devices.append(SystemNetworkConfiguration())
elif connection == "qemu:///session":
port = util.spawn_instance_port_file(name)
device_type = "virtio-net-pci" if not util.needs_legacy_net(backingstore_image.name) else "e1000"
domain_configuration.network_devices.append(UserNetworkConfiguration(mac_address=mac_address, port=port, device_type=device_type))
for i in range(nic_count - 1):
- mac_address = util.generate_mac_address()
domain_configuration.network_devices.append(
- UserNetworkConfiguration(mac_address=mac_address, port=port, device_type=device_type)
+ UserNetworkConfiguration(port=port, device_type=device_type)
)
else:
raise TestcloudInstanceError("Unsupported connection type")
diff --git a/testcloud/util.py b/testcloud/util.py
index f7feafa..1726883 100644
--- a/testcloud/util.py
+++ b/testcloud/util.py
@@ -104,16 +104,6 @@ def spawn_instance_port_file(instance_name):
return port
-def generate_mac_address():
- """Create a workable mac address for our instances."""
-
- hex_mac = [0x52, 0x54, 0x00] # These 3 are the prefix libvirt uses
- hex_mac += [random.randint(0x00, 0xFF) for x in range(3)]
- mac = ":".join(hex(x)[2:] for x in hex_mac)
-
- return mac
-
-
def verify_url(url: str) -> str:
if not url:
raise exceptions.TestcloudImageError