> On June 13, 2013, 6:01 p.m., John Burwell wrote: > > > > Wei Zhou wrote: > John, > > The validation of input fields is in CreateDiskOfferingCmd.java and > CreateServiceOfferingCmd.java, like: > public long getBytesReadRate() { > return (bytesReadRate == null) || (bytesReadRate < 0) ? 0 : > bytesReadRate; > } > It can avoid setting a variaty with "long" type to "null" in other java > files, for instance VolumeTO.java and DiskProfile.java. > > I think it is better to set the default value to 0 which means no > limitation. > What do you think if the default value is null? Maybe it also means no > limitation, right? > > -Wei > > John Burwell wrote: > null is the Java idiom for representing the lack of a optional value > across all types. Using zero for this purpose feels like a magic value. It > also raises the question of a client's intent when zero is passed -- did they > make a mistake or did they intend not specify a value? To my way of > thinking, any non-null value for the rates should be greater than zero and > less than a maximum. Values that fall out of this range cause an exception > ... > > Wei Zhou wrote: > The default value means, if user does not specify or specify to an > invalid value, the variaty will be set to default. > If add null value, the processing for null is same to 0. There is no > special processing for null value, as both null and 0 mean no limitation in > Java side. > maximum is not necessary, I think, unless there is a cap in hypervisor. I > do not see the cap in libvirt. > > John Burwell wrote: > If the value's content wasn't being checked as a business rule in > LibVirtComputingResource, I could see it as a default value. However, there > are parts of the code that need to check for presence, and null is the most > natural expression of that case in Java. In the context of this patch, it > seems relatively minor. However, across a large code base, using null > consistently across all types to represent the lack of an optional value > makes the code base much easier to comprehend and manage, > > John Burwell wrote: > Is this a KVM specific feature or is KVM the first implementation? If > this is the first implementation, how well do these new attributes map to the > other hypervisors? If this feature is KVM specific, I am bit concerned about > adding attributes and business rules to the Hypervisor layer that are > specific to a particular hypervisor. > > Wei Zhou wrote: > KVM is the first implementation.
I will use Long instead of long. - Wei ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/11782/#review21865 ----------------------------------------------------------- On June 12, 2013, 9:13 a.m., Wei Zhou wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/11782/ > ----------------------------------------------------------- > > (Updated June 12, 2013, 9:13 a.m.) > > > Review request for cloudstack, Wido den Hollander and John Burwell. > > > Description > ------- > > The patch for VM Disk I/O throttling based on commit > 3f3c6aa35f64c4129c203d54840524e6aa2c4621 > > > This addresses bug CLOUDSTACK-1301. > > > Diffs > ----- > > api/src/com/cloud/agent/api/to/VolumeTO.java 4cbe82b > api/src/com/cloud/offering/DiskOffering.java dd77c70 > api/src/com/cloud/vm/DiskProfile.java e3a3386 > api/src/org/apache/cloudstack/api/ApiConstants.java ab1402c > > api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java > aa11599 > > api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java > 4c54a4e > api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java > 377e66e > api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java > 31533f8 > api/src/org/apache/cloudstack/api/response/VolumeResponse.java 21d7d1a > client/WEB-INF/classes/resources/messages.properties 2b17359 > core/src/com/cloud/agent/api/AttachVolumeCommand.java 302b8f8 > engine/schema/src/com/cloud/storage/DiskOfferingVO.java 909d7fe > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java > bab53bc > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java > b8645e1 > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java > 9cddb2e > server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java 283181f > server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java 56e4d0a > server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java e27e2d9 > server/src/com/cloud/api/query/vo/DiskOfferingJoinVO.java 6d3cdcb > server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java e87a101 > server/src/com/cloud/api/query/vo/VolumeJoinVO.java 6ef8c91 > server/src/com/cloud/configuration/Config.java 5ee0fad > server/src/com/cloud/configuration/ConfigurationManager.java 8db037b > server/src/com/cloud/configuration/ConfigurationManagerImpl.java 59e70cf > server/src/com/cloud/storage/StorageManager.java d49a7f8 > server/src/com/cloud/storage/StorageManagerImpl.java d38b35e > server/src/com/cloud/storage/VolumeManagerImpl.java 43f3681 > server/src/com/cloud/test/DatabaseConfig.java 70c8178 > server/test/com/cloud/vpc/MockConfigurationManagerImpl.java 21b3590 > setup/db/db/schema-410to420.sql bcfbcc9 > ui/dictionary.jsp a5f0662 > ui/scripts/configuration.js cb15598 > > Diff: https://reviews.apache.org/r/11782/diff/ > > > Testing > ------- > > testing ok. > > > Thanks, > > Wei Zhou > >