mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06: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)
|
def->data.vds.switch_id) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (virXMLPropLongLong(source_node, "portid", 0, VIR_XML_PROP_REQUIRED,
|
if (virXMLPropLongLong(source_node, "portid", 0, VIR_XML_PROP_NONE,
|
||||||
&def->data.vds.port_id, def->data.vds.port_id) < 0)
|
&def->data.vds.port_id, 0) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!(def->data.vds.portgroup_id = virXMLPropStringRequired(source_node, "portgroupid")))
|
def->data.vds.portgroup_id = virXMLPropString(source_node, "portgroupid");
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (virXMLPropLongLong(source_node, "connectionid", 0, VIR_XML_PROP_REQUIRED,
|
if (virXMLPropLongLong(source_node, "connectionid", 0, VIR_XML_PROP_NONE,
|
||||||
&def->data.vds.connection_id, def->data.vds.connection_id) < 0)
|
&def->data.vds.connection_id, 0) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -3684,15 +3684,21 @@
|
|||||||
<attribute name="switchid">
|
<attribute name="switchid">
|
||||||
<ref name="UUID"/>
|
<ref name="UUID"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
<optional>
|
||||||
<attribute name="portid">
|
<attribute name="portid">
|
||||||
<data type="long"/>
|
<data type="long"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
</optional>
|
||||||
|
<optional>
|
||||||
<attribute name="portgroupid">
|
<attribute name="portgroupid">
|
||||||
<data type="string"/>
|
<data type="string"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
</optional>
|
||||||
|
<optional>
|
||||||
<attribute name="connectionid">
|
<attribute name="connectionid">
|
||||||
<data type="long"/>
|
<data type="long"/>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
</optional>
|
||||||
</element>
|
</element>
|
||||||
<ref name="interface-options"/>
|
<ref name="interface-options"/>
|
||||||
</interleave>
|
</interleave>
|
||||||
|
@ -2896,7 +2896,7 @@ virVMXParseEthernet(virConf *conf, int controller, virDomainNetDef **def)
|
|||||||
if (virVMXGetConfigString(conf,
|
if (virVMXGetConfigString(conf,
|
||||||
portgroupId_name,
|
portgroupId_name,
|
||||||
&(*def)->data.vds.portgroup_id,
|
&(*def)->data.vds.portgroup_id,
|
||||||
false) < 0 ||
|
true) < 0 ||
|
||||||
virVMXGetConfigLong(conf,
|
virVMXGetConfigLong(conf,
|
||||||
portId_name,
|
portId_name,
|
||||||
&(*def)->data.vds.port_id,
|
&(*def)->data.vds.port_id,
|
||||||
@ -2906,7 +2906,7 @@ virVMXParseEthernet(virConf *conf, int controller, virDomainNetDef **def)
|
|||||||
connectionId_name,
|
connectionId_name,
|
||||||
&(*def)->data.vds.connection_id,
|
&(*def)->data.vds.connection_id,
|
||||||
0,
|
0,
|
||||||
false) < 0)
|
true) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else if (connectionType == NULL && networkName == NULL) {
|
} else if (connectionType == NULL && networkName == NULL) {
|
||||||
(*def)->type = VIR_DOMAIN_NET_TYPE_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[5], uuid[6], uuid[7], uuid[8], uuid[9], uuid[10],
|
||||||
uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
|
uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
|
||||||
|
|
||||||
|
if (def->data.vds.port_id) {
|
||||||
virBufferAsprintf(buffer, "ethernet%d.dvs.portId = \"%lld\"\n",
|
virBufferAsprintf(buffer, "ethernet%d.dvs.portId = \"%lld\"\n",
|
||||||
controller, def->data.vds.port_id);
|
controller, def->data.vds.port_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def->data.vds.portgroup_id) {
|
||||||
virBufferAsprintf(buffer, "ethernet%d.dvs.", controller);
|
virBufferAsprintf(buffer, "ethernet%d.dvs.", controller);
|
||||||
virBufferEscapeString(buffer, "portgroupId = \"%s\"\n", def->data.vds.portgroup_id);
|
virBufferEscapeString(buffer, "portgroupId = \"%s\"\n",
|
||||||
|
def->data.vds.portgroup_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def->data.vds.connection_id) {
|
||||||
virBufferAsprintf(buffer, "ethernet%d.dvs.connectionId = \"%lld\"\n",
|
virBufferAsprintf(buffer, "ethernet%d.dvs.connectionId = \"%lld\"\n",
|
||||||
controller, def->data.vds.connection_id);
|
controller, def->data.vds.connection_id);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,4 @@ ethernet0.virtualDev = "e1000e"
|
|||||||
ethernet0.addressType = "vpx"
|
ethernet0.addressType = "vpx"
|
||||||
ethernet0.generatedAddress = "00:50:56:87:65:43"
|
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.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"
|
displayName = "test"
|
@ -14,7 +14,7 @@
|
|||||||
<devices>
|
<devices>
|
||||||
<interface type='vds'>
|
<interface type='vds'>
|
||||||
<mac address='00:50:56:87:65:43' type='generated'/>
|
<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'/>
|
<model type='e1000e'/>
|
||||||
</interface>
|
</interface>
|
||||||
<video>
|
<video>
|
Loading…
Reference in New Issue
Block a user