diff --git a/instances/jobs.py b/instances/jobs.py index bf467460..2cc43e3c 100644 --- a/instances/jobs.py +++ b/instances/jobs.py @@ -141,14 +141,13 @@ def clone_data(user, instance, fields): if app_settings.CLONE_INSTANCE_AUTO_NAME == "True" and not data["name"]: auto_vname = utils.get_clone_free_names()[0] data["name"] = auto_vname - data["clone-net-mac-0"] = utils.get_dhcp_mac_address(auto_vname) for disk in instance.config_disks: data[f"disk-{disk['dev']}"] = utils.get_clone_disk_name(disk, instance.name, auto_vname) if not user.is_superuser: for disk in instance.config_disks: data[f"disk-{disk['dev']}"] = utils.get_clone_disk_name(disk, instance.name, data["name"]) - for num in range(max(1, len(instance.config_networks))): + for num in range(len(instance.config_networks)): key = f"clone-net-mac-{num}" if not data.get(key): data[key] = (utils.get_dhcp_mac_address(data["name"]) if num == 0 else "") or utils.get_random_mac_address() @@ -173,7 +172,7 @@ def clone_data(user, instance, fields): if not re.match(r"^[a-zA-Z0-9-]+$", data["name"]): raise util.OperationError( _("Instance name '%(clone_name)s' contains invalid characters!") % {"clone_name": data["name"]}) - if "clone-net-mac-0" not in data or invalid_macs: + if invalid_macs: raise util.OperationError(_("Instance MAC '%(clone_mac)s' invalid format!") % {"clone_mac": ", ".join(invalid_macs)}) if invalid_disks: raise util.OperationError( diff --git a/instances/templates/instance.html b/instances/templates/instance.html index 9a37acb6..955df7eb 100644 --- a/instances/templates/instance.html +++ b/instances/templates/instance.html @@ -152,6 +152,12 @@ @@ -203,19 +209,11 @@ {% endif %} {% if request.user.is_superuser %} $(document).ready(function () { - random_mac('clone-net-mac-0'); + // every NIC of the clone a new address: one the VM has would clash with it + $('input[name^="clone-net-mac-"]').each(function () { random_mac(this.name); }); random_mac('add-net-mac'); update_clone_disk_name($('#clone_name').val()); }); -{% else %} - $('#select_clone_name').on('change', function () { - update_clone_disk_name($(this).val()); - guess_mac_address('#select_clone_name', 0); - }); - $(document).ready(function () { - update_clone_disk_name($('#select_clone_name').val()); - guess_mac_address('#select_clone_name', 0); - }); {% endif %}