diff options
3 files changed, 11 insertions, 5 deletions
diff --git a/src/main/java/org/openslx/libvirt/domain/device/Device.java b/src/main/java/org/openslx/libvirt/domain/device/Device.java index e3adf90..d743522 100644 --- a/src/main/java/org/openslx/libvirt/domain/device/Device.java +++ b/src/main/java/org/openslx/libvirt/domain/device/Device.java @@ -192,7 +192,7 @@ public class Device extends LibvirtXmlNode implements HostdevAddressableTarget<H * @param expression XPath expression to select the XML address element. * @param address PCI device address for the selected XML address element. */ - protected void setPciAddress( final String expression, final HostdevPciDeviceAddress address ) + protected void setPciAddress( final String expression, final HostdevPciDeviceAddress address, boolean includeType ) { final String pciDomain = HostdevUtils.appendHexPrefix( address.getPciDomainAsString() ); final String pciBus = HostdevUtils.appendHexPrefix( address.getPciBusAsString() ); @@ -203,7 +203,11 @@ public class Device extends LibvirtXmlNode implements HostdevAddressableTarget<H this.setXmlElementAttributeValue( expression, "bus", pciBus ); this.setXmlElementAttributeValue( expression, "slot", pciDevice ); this.setXmlElementAttributeValue( expression, "function", pciFunction ); - this.setXmlElementAttributeValue( expression, "type", BusType.PCI.toString() ); + if ( includeType ) { + this.setXmlElementAttributeValue( expression, "type", BusType.PCI.toString() ); + } else { + this.removeXmlElementAttribute( expression, "type" ); + } } /** @@ -240,7 +244,7 @@ public class Device extends LibvirtXmlNode implements HostdevAddressableTarget<H public void setPciTarget( HostdevPciDeviceAddress address ) { - this.setPciAddress( "address", address ); + this.setPciAddress( "address", address, true ); } /** diff --git a/src/main/java/org/openslx/libvirt/domain/device/HostdevPci.java b/src/main/java/org/openslx/libvirt/domain/device/HostdevPci.java index 1351f26..8197df2 100644 --- a/src/main/java/org/openslx/libvirt/domain/device/HostdevPci.java +++ b/src/main/java/org/openslx/libvirt/domain/device/HostdevPci.java @@ -37,7 +37,7 @@ public class HostdevPci extends Hostdev implements HostdevAddressableSource<Host @Override public void setSource( HostdevPciDeviceAddress address ) { - this.setPciAddress( "source/address", address ); + this.setPciAddress( "source/address", address, false ); } /** diff --git a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlNode.java b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlNode.java index a941acb..7f3818f 100644 --- a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlNode.java +++ b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlNode.java @@ -319,7 +319,9 @@ public class LibvirtXmlNode implements LibvirtXmlCreatable, LibvirtXmlEditable if ( node != null ) { Node attribute = node.getAttributes().getNamedItem( attributeName ); - node.getAttributes().removeNamedItem( attribute.getNodeName() ); + if ( attribute != null ) { + node.getAttributes().removeNamedItem( attribute.getNodeName() ); + } } } |