mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
vmx: Do not require all ID data for VMWare Distributed Switch
Similarly to commit 2482801608b8 we can safely ignore connectionId, portId and portgroupId in both XML and VMX as they are only a blind pass-through between XML and VMX and an ethernet without such parameters was spotted in the wild. On top of that even our documentation says the whole VMWare Distrubuted Switch configuration is a best-effort. Resolves: https://issues.redhat.com/browse/RHEL-46099 Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
893800be49
commit
db622081e0
@ -9593,15 +9593,14 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
|
||||
def->data.vds.switch_id) < 0)
|
||||
return NULL;
|
||||
|
||||
if (virXMLPropLongLong(source_node, "portid", 0, VIR_XML_PROP_REQUIRED,
|
||||
&def->data.vds.port_id, def->data.vds.port_id) < 0)
|
||||
if (virXMLPropLongLong(source_node, "portid", 0, VIR_XML_PROP_NONE,
|
||||
&def->data.vds.port_id, 0) < 0)
|
||||
return NULL;
|
||||
|
||||
if (!(def->data.vds.portgroup_id = virXMLPropStringRequired(source_node, "portgroupid")))
|
||||
return NULL;
|
||||
def->data.vds.portgroup_id = virXMLPropString(source_node, "portgroupid");
|
||||
|
||||
if (virXMLPropLongLong(source_node, "connectionid", 0, VIR_XML_PROP_REQUIRED,
|
||||
&def->data.vds.connection_id, def->data.vds.connection_id) < 0)
|
||||
if (virXMLPropLongLong(source_node, "connectionid", 0, VIR_XML_PROP_NONE,
|
||||
&def->data.vds.connection_id, 0) < 0)
|
||||
return NULL;
|
||||
|
||||
break;
|
||||
|
@ -3684,15 +3684,21 @@
|
||||
<attribute name="switchid">
|
||||
<ref name="UUID"/>
|
||||
</attribute>
|
||||
<attribute name="portid">
|
||||
<data type="long"/>
|
||||
</attribute>
|
||||
<attribute name="portgroupid">
|
||||
<data type="string"/>
|
||||
</attribute>
|
||||
<attribute name="connectionid">
|
||||
<data type="long"/>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="portid">
|
||||
<data type="long"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="portgroupid">
|
||||
<data type="string"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="connectionid">
|
||||
<data type="long"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
<ref name="interface-options"/>
|
||||
</interleave>
|
||||
|
@ -2896,7 +2896,7 @@ virVMXParseEthernet(virConf *conf, int controller, virDomainNetDef **def)
|
||||
if (virVMXGetConfigString(conf,
|
||||
portgroupId_name,
|
||||
&(*def)->data.vds.portgroup_id,
|
||||
false) < 0 ||
|
||||
true) < 0 ||
|
||||
virVMXGetConfigLong(conf,
|
||||
portId_name,
|
||||
&(*def)->data.vds.port_id,
|
||||
@ -2906,7 +2906,7 @@ virVMXParseEthernet(virConf *conf, int controller, virDomainNetDef **def)
|
||||
connectionId_name,
|
||||
&(*def)->data.vds.connection_id,
|
||||
0,
|
||||
false) < 0)
|
||||
true) < 0)
|
||||
goto cleanup;
|
||||
} else if (connectionType == NULL && networkName == NULL) {
|
||||
(*def)->type = VIR_DOMAIN_NET_TYPE_NULL;
|
||||
@ -4038,14 +4038,22 @@ virVMXFormatEthernet(virDomainNetDef *def, int controller,
|
||||
uuid[5], uuid[6], uuid[7], uuid[8], uuid[9], uuid[10],
|
||||
uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
|
||||
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.portId = \"%lld\"\n",
|
||||
controller, def->data.vds.port_id);
|
||||
if (def->data.vds.port_id) {
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.portId = \"%lld\"\n",
|
||||
controller, def->data.vds.port_id);
|
||||
}
|
||||
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.", controller);
|
||||
virBufferEscapeString(buffer, "portgroupId = \"%s\"\n", def->data.vds.portgroup_id);
|
||||
if (def->data.vds.portgroup_id) {
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.", controller);
|
||||
virBufferEscapeString(buffer, "portgroupId = \"%s\"\n",
|
||||
def->data.vds.portgroup_id);
|
||||
}
|
||||
|
||||
if (def->data.vds.connection_id) {
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.connectionId = \"%lld\"\n",
|
||||
controller, def->data.vds.connection_id);
|
||||
}
|
||||
|
||||
virBufferAsprintf(buffer, "ethernet%d.dvs.connectionId = \"%lld\"\n",
|
||||
controller, def->data.vds.connection_id);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,4 @@ ethernet0.virtualDev = "e1000e"
|
||||
ethernet0.addressType = "vpx"
|
||||
ethernet0.generatedAddress = "00:50:56:87:65:43"
|
||||
ethernet0.dvs.switchId = "50 34 26 b2 94 e9 3b 16-1d 68 87 bf ff 4a 54 40"
|
||||
ethernet0.dvs.portgroupId = "dvportgroup-1285"
|
||||
ethernet0.dvs.connectionId = "408217997"
|
||||
displayName = "test"
|
@ -14,7 +14,7 @@
|
||||
<devices>
|
||||
<interface type='vds'>
|
||||
<mac address='00:50:56:87:65:43' type='generated'/>
|
||||
<source switchid='503426b2-94e9-3b16-1d68-87bfff4a5440' portid='0' portgroupid='dvportgroup-1285' connectionid='408217997'/>
|
||||
<source switchid='503426b2-94e9-3b16-1d68-87bfff4a5440'/>
|
||||
<model type='e1000e'/>
|
||||
</interface>
|
||||
<video>
|
Loading…
x
Reference in New Issue
Block a user