mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
vmx: Do not require all ID data for VMWare Distributed Switch
Similarly to commit 2482801608
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…
Reference in New Issue
Block a user