in plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java [1165:1304]
public String toString() {
StringBuilder diskBuilder = new StringBuilder();
diskBuilder.append("<disk ");
if (_deviceType != null) {
diskBuilder.append(" device='" + _deviceType + "'");
}
diskBuilder.append(" type='" + _diskType + "'");
diskBuilder.append(">\n");
if(qemuDriver) {
diskBuilder.append("<driver name='qemu'" + " type='" + _diskFmtType + "' ");
if (_deviceType != DeviceType.CDROM) {
diskBuilder.append("cache='" + _diskCacheMode + "' ");
}
if(_discard != null && _discard != DiscardType.IGNORE) {
diskBuilder.append("discard='" + _discard.toString() + "' ");
}
if(ioDriver != null) {
diskBuilder.append(String.format("io='%s' ", ioDriver));
}
if (isIothreadsEnabled && _bus == DiskBus.VIRTIO) {
diskBuilder.append(String.format("iothread='%s' ", NUMBER_OF_IOTHREADS));
}
diskBuilder.append("/>\n");
}
if (_diskType == DiskType.FILE) {
diskBuilder.append("<source ");
if (_sourcePath != null) {
diskBuilder.append("file='" + _sourcePath + "'");
} else if (_deviceType == DeviceType.CDROM) {
diskBuilder.append("file=''");
}
diskBuilder.append("/>\n");
} else if (_diskType == DiskType.BLOCK) {
diskBuilder.append("<source");
if (_sourcePath != null) {
diskBuilder.append(" dev='" + _sourcePath + "'");
}
diskBuilder.append("/>\n");
} else if (_diskType == DiskType.NETWORK) {
diskBuilder.append("<source ");
diskBuilder.append(" protocol='" + _diskProtocol + "'");
diskBuilder.append(" name='" + _sourcePath + "'");
diskBuilder.append(">\n");
for (String sourceHost : _sourceHost.split(",")) {
diskBuilder.append("<host name='");
diskBuilder.append(sourceHost.replace("[", "").replace("]", ""));
if (_sourcePort != 0) {
diskBuilder.append("' port='");
diskBuilder.append(_sourcePort);
}
diskBuilder.append("'/>\n");
}
diskBuilder.append("</source>\n");
if (_authUserName != null) {
diskBuilder.append("<auth username='" + _authUserName + "'>\n");
diskBuilder.append("<secret type='ceph' uuid='" + _authSecretUUID + "'/>\n");
diskBuilder.append("</auth>\n");
}
}
diskBuilder.append("<target dev='" + _diskLabel + "'");
if (_bus != null) {
diskBuilder.append(" bus='" + _bus + "'");
}
diskBuilder.append("/>\n");
if (geometry != null) {
diskBuilder.append(geometry.toXml());
}
if (logicalBlockIOSize != null || physicalBlockIOSize != null) {
diskBuilder.append("<blockio ");
if (logicalBlockIOSize != null) {
diskBuilder.append(String.format("logical_block_size='%s' ", logicalBlockIOSize));
}
if (physicalBlockIOSize != null) {
diskBuilder.append(String.format("physical_block_size='%s' ", physicalBlockIOSize));
}
diskBuilder.append("/>\n");
}
if (_serial != null && !_serial.isEmpty() && _deviceType != DeviceType.LUN) {
diskBuilder.append("<serial>" + _serial + "</serial>\n");
}
if (encryptDetails != null) {
diskBuilder.append("<encryption format='" + encryptDetails.encryptFormat + "'>\n");
diskBuilder.append("<secret type='passphrase' uuid='" + encryptDetails.passphraseUuid + "' />\n");
diskBuilder.append("</encryption>\n");
}
if ((_deviceType != DeviceType.CDROM) &&
(s_libvirtVersion >= 9008) &&
(s_qemuVersion >= 1001000) &&
(((_bytesReadRate != null) && (_bytesReadRate > 0)) || ((_bytesWriteRate != null) && (_bytesWriteRate > 0)) ||
((_iopsReadRate != null) && (_iopsReadRate > 0)) || ((_iopsWriteRate != null) && (_iopsWriteRate > 0)))) { // not CDROM, from libvirt 0.9.8 and QEMU 1.1.0
diskBuilder.append("<iotune>\n");
if ((_bytesReadRate != null) && (_bytesReadRate > 0))
diskBuilder.append("<read_bytes_sec>" + _bytesReadRate + "</read_bytes_sec>\n");
if ((_bytesWriteRate != null) && (_bytesWriteRate > 0))
diskBuilder.append("<write_bytes_sec>" + _bytesWriteRate + "</write_bytes_sec>\n");
if ((_iopsReadRate != null) && (_iopsReadRate > 0))
diskBuilder.append("<read_iops_sec>" + _iopsReadRate + "</read_iops_sec>\n");
if ((_iopsWriteRate != null) && (_iopsWriteRate > 0))
diskBuilder.append("<write_iops_sec>" + _iopsWriteRate + "</write_iops_sec>\n");
if (s_qemuVersion >= 2004000) {
if (_bytesReadRateMax != null && _bytesReadRateMax > 0 ) {
diskBuilder.append("<read_bytes_sec_max>" + _bytesReadRateMax + "</read_bytes_sec_max>\n");
}
if (_bytesWriteRateMax != null && _bytesWriteRateMax > 0) {
diskBuilder.append("<write_bytes_sec_max>" + _bytesWriteRateMax + "</write_bytes_sec_max>\n");
}
if (_iopsReadRateMax != null && _iopsReadRateMax > 0)
diskBuilder.append("<read_iops_sec_max>" + _iopsReadRateMax + "</read_iops_sec_max>\n");
if (_iopsWriteRateMax != null && _iopsWriteRateMax > 0)
diskBuilder.append("<write_iops_sec_max>" + _iopsWriteRateMax + "</write_iops_sec_max>\n");
}
if (s_qemuVersion >= 2006000) {
if (_bytesReadRateMaxLength != null && _bytesReadRateMaxLength > 0) {
diskBuilder.append("<read_bytes_sec_max_length>" + _bytesReadRateMaxLength + "</read_bytes_sec_max_length>\n");
}
if (_bytesWriteRateMaxLength != null && _bytesWriteRateMaxLength > 0) {
diskBuilder.append("<write_bytes_sec_max_length>" + _bytesWriteRateMaxLength + "</write_bytes_sec_max_length>\n");
}
if (_iopsReadRateMaxLength != null && _iopsReadRateMaxLength > 0)
diskBuilder.append("<read_iops_sec_max_length>" + _iopsReadRateMaxLength + "</read_iops_sec_max_length>\n");
if (_iopsWriteRateMaxLength != null && _iopsWriteRateMaxLength > 0)
diskBuilder.append("<write_iops_sec_max_length>" + _iopsWriteRateMaxLength + "</write_iops_sec_max_length>\n");
}
diskBuilder.append("</iotune>\n");
}
diskBuilder.append("</disk>\n");
return diskBuilder.toString();
}