diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 9a0a59bb8..501bf32cb 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -2553,6 +2553,20 @@ class Cable(ChangeLoggedModel): self.termination_b, self.termination_b.cable_id )) + # Virtual interfaces cannot be connected + endpoint_a, endpoint_b = self.get_path_endpoints() + if ( + ( + isinstance(endpoint_a, Interface) and + endpoint_a.form_factor == IFACE_FF_VIRTUAL + ) or + ( + isinstance(endpoint_b, Interface) and + endpoint_b.form_factor == IFACE_FF_VIRTUAL + ) + ): + raise ValidationError("Cannot connect to a virtual interface") + # Validate length and length_unit if self.length and not self.length_unit: raise ValidationError("Must specify a unit when setting a cable length")