----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/16461/#review34690 -----------------------------------------------------------
Howie, Could you change it as it can not be applied to master? -Wei - Wei Zhou On Dec. 25, 2013, 3:47 a.m., Howie YU wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/16461/ > ----------------------------------------------------------- > > (Updated Dec. 25, 2013, 3:47 a.m.) > > > Review request for cloudstack, Wei Zhou and Wido den Hollander. > > > Bugs: CLOUDSTACK-5642 > https://issues.apache.org/jira/browse/CLOUDSTACK-5642 > > > Repository: cloudstack-git > > > Description > ------- > > Libvirt supports direct attachment of the guest VM's network to a physical > interface. > But I found the following code may cause some problem, when the nic interface > type is direct > If type is direct , then this nic will be ignore. > > String type = nic.getAttribute("type"); > String mac = getAttrValue("mac", "address", nic); > String dev = getAttrValue("target", "dev", nic); > String model = getAttrValue("model", "type", nic); > InterfaceDef def = new InterfaceDef(); > NodeList bandwidth = nic.getElementsByTagName("bandwidth"); > Integer networkRateKBps = 0; > if ((bandwidth != null) && (bandwidth.getLength() != 0)) { > Integer inbound = Integer.valueOf(getAttrValue("inbound", > "average", (Element)bandwidth.item(0))); > Integer outbound = > Integer.valueOf(getAttrValue("outbound", "average", > (Element)bandwidth.item(0))); > if (inbound == outbound) > networkRateKBps = inbound; > } > if (type.equalsIgnoreCase("network")) { > String network = getAttrValue("source", "network", nic); > def.defPrivateNet(network, dev, mac, > nicModel.valueOf(model.toUpperCase()), networkRateKBps); > } else if (type.equalsIgnoreCase("bridge")) { > String bridge = getAttrValue("source", "bridge", nic); > def.defBridgeNet(bridge, dev, mac, > nicModel.valueOf(model.toUpperCase()), networkRateKBps); > } else if (type.equalsIgnoreCase("ethernet")) { > String scriptPath = getAttrValue("script", "path", nic); > def.defEthernet(dev, mac, > nicModel.valueOf(model.toUpperCase()), scriptPath, networkRateKBps); > } > interfaces.add(def); > > > Diffs > ----- > > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java > 127f648 > > plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java > PRE-CREATION > > Diff: https://reviews.apache.org/r/16461/diff/ > > > Testing > ------- > > I add a unit test LibvirtDomainXMLParserTest in test directory , and add a > direct nic type domain xml for test > > <domain type='kvm' id='10'> > <name>ubuntu</name> > <uuid>77919cf3-b2a7-994f-5f3c-0a91fb9bcbe8</uuid> > <memory unit='KiB'>1048576</memory> > <currentMemory unit='KiB'>1048576</currentMemory> > <vcpu placement='static'>1</vcpu> > <os> > <type arch='x86_64' machine='rhel6.4.0'>hvm</type> > <boot dev='hd'/> > </os> <features> > <acpi/> > <apic/> > <pae/> > </features> > <clock offset='utc'/> > <on_poweroff>destroy</on_poweroff> > <on_reboot>restart</on_reboot> > <on_crash>restart</on_crash> > <devices> > <emulator>/usr/libexec/qemu-kvm</emulator> > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2' cache='none'/> > <source file='/var/lib/libvirt/images/ubuntu-vm.qcow2'/> > <target dev='hdb' bus='ide'/> > <alias name='ide0-0-1'/> > <address type='drive' controller='0' bus='0' target='0' unit='1'/> > </disk> > <controller type='usb' index='0'> > <alias name='usb0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> > </controller> > <controller type='ide' index='0'> > <alias name='ide0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> > </controller> > <interface type='direct'> > <mac address='52:54:00:e1:82:a0'/> > <source dev='eth0' mode='vepa'/> > <target dev='macvtap0'/> > <alias name='net0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> > </interface> > <serial type='pty'> > <source path='/dev/pts/4'/> > <target port='0'/> > <alias name='serial0'/> > </serial> > <console type='pty' tty='/dev/pts/4'> > <source path='/dev/pts/4'/> > <target type='serial' port='0'/> > <alias name='serial0'/> > </console> > <input type='mouse' bus='ps2'/> > <graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'> > <listen type='address' address='127.0.0.1'/> > </graphics> > <sound model='ich6'> > <alias name='sound0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> > </sound> > <video> > <model type='cirrus' vram='9216' heads='1'/> > <alias name='video0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> > </video> > <memballoon model='virtio'> > <alias name='balloon0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> > </memballoon> > </devices> > <seclabel type='none'/> > </domain> > > > Thanks, > > Howie YU > >