mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
Add usermode interfaces to LibvirtVMDef (#184)
* Add usermode interfaces to LibvirtVMDef Signed-off-by: Marcus Sorensen <marcus_sorensen@apple.com> * Update plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com> * trailingwhitespace * Set model on usermode network, fix NPE in network rate Signed-off-by: Marcus Sorensen <marcus_sorensen@apple.com> Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com> Co-authored-by: Daan Hoogland <daan@onecht.net> Co-authored-by: Marcus Sorensen <mls@apple.com>
This commit is contained in:
parent
7c7ee05cef
commit
d177678fd3
@ -1213,7 +1213,7 @@ public class LibvirtVMDef {
|
||||
private String _ipAddr;
|
||||
private String _scriptPath;
|
||||
private NicModel _model;
|
||||
private Integer _networkRateKBps;
|
||||
private int _networkRateKBps;
|
||||
private String _virtualPortType;
|
||||
private String _virtualPortInterfaceId;
|
||||
private int _vlanTag = -1;
|
||||
@ -1224,11 +1224,27 @@ public class LibvirtVMDef {
|
||||
private String _dpdkSourcePort;
|
||||
private String _dpdkExtraLines;
|
||||
private String _interfaceMode;
|
||||
private String _userIp4Network;
|
||||
private Integer _userIp4Prefix;
|
||||
|
||||
public void defBridgeNet(String brName, String targetBrName, String macAddr, NicModel model) {
|
||||
defBridgeNet(brName, targetBrName, macAddr, model, 0);
|
||||
}
|
||||
|
||||
public void defUserNet(NicModel model, String macAddr, String ip4Network, Integer ip4Prefix) {
|
||||
_netType = GuestNetType.USER;
|
||||
_macAddr = macAddr;
|
||||
_userIp4Network = ip4Network;
|
||||
_userIp4Prefix = ip4Prefix;
|
||||
_model = model;
|
||||
}
|
||||
|
||||
public void defUserNet(NicModel model, String macAddr) {
|
||||
_netType = GuestNetType.USER;
|
||||
_macAddr = macAddr;
|
||||
_model = model;
|
||||
}
|
||||
|
||||
public void defBridgeNet(String brName, String targetBrName, String macAddr, NicModel model, Integer networkRateKBps) {
|
||||
_netType = GuestNetType.BRIDGE;
|
||||
_sourceName = brName;
|
||||
@ -1410,6 +1426,7 @@ public class LibvirtVMDef {
|
||||
netBuilder.append("<source type='unix' path='"+ _dpdkSourcePath + _dpdkSourcePort +
|
||||
"' mode='" + _interfaceMode + "'/>\n");
|
||||
}
|
||||
|
||||
if (_networkName != null) {
|
||||
netBuilder.append("<target dev='" + _networkName + "'/>\n");
|
||||
}
|
||||
@ -1446,13 +1463,18 @@ public class LibvirtVMDef {
|
||||
netBuilder.append(_dpdkExtraLines);
|
||||
}
|
||||
|
||||
if (_netType != GuestNetType.VHOSTUSER) {
|
||||
if (_netType != GuestNetType.VHOSTUSER && _netType != GuestNetType.USER) {
|
||||
netBuilder.append("<link state='" + (_linkStateUp ? "up" : "down") +"'/>\n");
|
||||
}
|
||||
|
||||
if (_slot != null) {
|
||||
netBuilder.append(String.format("<address type='pci' domain='0x0000' bus='0x00' slot='0x%02x' function='0x0'/>\n", _slot));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(_userIp4Network) && _userIp4Prefix != null) {
|
||||
netBuilder.append(String.format("<ip family='ipv4' address='%s' prefix='%s'/>\n", _userIp4Network, _userIp4Prefix));
|
||||
}
|
||||
|
||||
return netBuilder.toString();
|
||||
}
|
||||
|
||||
|
||||
@ -58,7 +58,34 @@ public class LibvirtVMDefTest extends TestCase {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterfaceEtehrnet() {
|
||||
public void testInterfaceTypeUserWithNetwork() {
|
||||
LibvirtVMDef.InterfaceDef interfaceDef = new LibvirtVMDef.InterfaceDef();
|
||||
interfaceDef.defUserNet(LibvirtVMDef.InterfaceDef.NicModel.VIRTIO, "00:11:22:aa:bb:dd", "192.168.100.0", 24);
|
||||
|
||||
String expected = "<interface type='user'>\n" +
|
||||
"<mac address='00:11:22:aa:bb:dd'/>\n" +
|
||||
"<model type='virtio'/>\n" +
|
||||
"<ip family='ipv4' address='192.168.100.0' prefix='24'/>\n" +
|
||||
"</interface>\n";
|
||||
|
||||
assertEquals(expected, interfaceDef.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterfaceTypeUserWithoutNetwork() {
|
||||
LibvirtVMDef.InterfaceDef interfaceDef = new LibvirtVMDef.InterfaceDef();
|
||||
interfaceDef.defUserNet(LibvirtVMDef.InterfaceDef.NicModel.VIRTIO, "00:11:22:aa:bb:dd");
|
||||
|
||||
String expected = "<interface type='user'>\n" +
|
||||
"<mac address='00:11:22:aa:bb:dd'/>\n" +
|
||||
"<model type='virtio'/>\n" +
|
||||
"</interface>\n";
|
||||
|
||||
assertEquals(expected, interfaceDef.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterfaceEthernet() {
|
||||
LibvirtVMDef.InterfaceDef ifDef = new LibvirtVMDef.InterfaceDef();
|
||||
ifDef.defEthernet("targetDeviceName", "00:11:22:aa:bb:dd", LibvirtVMDef.InterfaceDef.NicModel.VIRTIO);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user