[ https://issues.apache.org/jira/browse/CLOUDSTACK-10173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16299926#comment-16299926 ]
ASF GitHub Bot commented on CLOUDSTACK-10173: --------------------------------------------- rhtyd closed pull request #2351: CLOUDSTACK-10173: VR's guest/public nic to pick network rate from offering URL: https://github.com/apache/cloudstack/pull/2351 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 40ffdf490d4..aaffe8da1c3 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -1170,7 +1170,7 @@ private UnPlugNicAnswer execute(UnPlugNicCommand cmd) { } } - private void plugPublicNic(VirtualMachineMO vmMo, final String vlanId, final String vifMacAddress) throws Exception { + private void plugPublicNic(VirtualMachineMO vmMo, final String vlanId, final IpAddressTO ipAddressTO) throws Exception { // TODO : probably need to set traffic shaping Pair<ManagedObjectReference, String> networkInfo = null; VirtualSwitchType vSwitchType = VirtualSwitchType.StandardVirtualSwitch; @@ -1182,11 +1182,11 @@ private void plugPublicNic(VirtualMachineMO vmMo, final String vlanId, final Str */ if (VirtualSwitchType.StandardVirtualSwitch == vSwitchType) { networkInfo = HypervisorHostHelper.prepareNetwork(_publicTrafficInfo.getVirtualSwitchName(), - "cloud.public", vmMo.getRunningHost(), vlanId, null, null, + "cloud.public", vmMo.getRunningHost(), vlanId, ipAddressTO.getNetworkRate(), null, _opsTimeout, true, BroadcastDomainType.Vlan, null, null); } else { networkInfo = - HypervisorHostHelper.prepareNetwork(_publicTrafficInfo.getVirtualSwitchName(), "cloud.public", vmMo.getRunningHost(), vlanId, null, null, null, + HypervisorHostHelper.prepareNetwork(_publicTrafficInfo.getVirtualSwitchName(), "cloud.public", vmMo.getRunningHost(), vlanId, null, ipAddressTO.getNetworkRate(), null, _opsTimeout, vSwitchType, _portsPerDvPortGroup, null, false, BroadcastDomainType.Vlan, _vsmCredentials, null); } @@ -1302,7 +1302,7 @@ private ExecutionResult prepareNetworkElementCommand(IpAssocCommand cmd) { } if (addVif) { - plugPublicNic(vmMo, vlanId, ip.getVifMacAddress()); + plugPublicNic(vmMo, vlanId, ip); publicNicInfo = vmMo.getNicDeviceIndex(publicNeworkName); if (publicNicInfo.first().intValue() >= 0) { networkUsage(controlIp, "addVif", "eth" + publicNicInfo.first()); diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index 2efec9a0999..8842b12935f 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -34,6 +34,7 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.acl.ControlledEntity.ACLType; +import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; @@ -994,33 +995,43 @@ public Integer getNetworkRate(long networkId, Long vmId) { if (vmId != null) { vm = _vmDao.findById(vmId); } - Network network = getNetwork(networkId); - NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, network.getNetworkOfferingId()); - - // For default userVm Default network and domR guest/public network, get rate information from the service - // offering; for other situations get information - // from the network offering - boolean isUserVmsDefaultNetwork = false; - boolean isDomRGuestOrPublicNetwork = false; - boolean isSystemVmNetwork = false; + final Network network = getNetwork(networkId); + final NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, network.getNetworkOfferingId()); + + // For user VM: For default nic use network rate from the service/compute offering, + // or on NULL from vm.network.throttling.rate global setting + // For router: Get network rate for guest and public networks from the guest network offering + // or on NULL from network.throttling.rate + // For others: Use network rate from their network offering, + // or on NULL from network.throttling.rate setting at zone > global level + // http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/service_offerings.html#network-throttling if (vm != null) { - Nic nic = _nicDao.findByNtwkIdAndInstanceId(networkId, vmId); - if (vm.getType() == Type.User && nic != null && nic.isDefaultNic()) { - isUserVmsDefaultNetwork = true; - } else if (vm.getType() == Type.DomainRouter && ntwkOff != null && - (ntwkOff.getTrafficType() == TrafficType.Public || ntwkOff.getTrafficType() == TrafficType.Guest)) { - isDomRGuestOrPublicNetwork = true; - } else if (vm.getType() == Type.ConsoleProxy || vm.getType() == Type.SecondaryStorageVm) { - isSystemVmNetwork = true; - } - } - if (isUserVmsDefaultNetwork || isDomRGuestOrPublicNetwork) { - return _configMgr.getServiceOfferingNetworkRate(vm.getServiceOfferingId(), network.getDataCenterId()); - } else if (isSystemVmNetwork) { - return -1; - } else { + if (vm.getType() == Type.User) { + final Nic nic = _nicDao.findByNtwkIdAndInstanceId(networkId, vmId); + if (nic != null && nic.isDefaultNic()) { + return _configMgr.getServiceOfferingNetworkRate(vm.getServiceOfferingId(), network.getDataCenterId()); + } + } + if (vm.getType() == Type.DomainRouter && (network.getTrafficType() == TrafficType.Public || network.getTrafficType() == TrafficType.Guest)) { + for (final Nic nic: _nicDao.listByVmId(vmId)) { + final NetworkVO nw = _networksDao.findById(nic.getNetworkId()); + if (nw.getTrafficType() == TrafficType.Guest) { + return _configMgr.getNetworkOfferingNetworkRate(nw.getNetworkOfferingId(), network.getDataCenterId()); + } + } + } + if (vm.getType() == Type.ConsoleProxy || vm.getType() == Type.SecondaryStorageVm) { + return -1; + } + } + if (ntwkOff != null) { return _configMgr.getNetworkOfferingNetworkRate(ntwkOff.getId(), network.getDataCenterId()); } + final Integer networkRate = NetworkOrchestrationService.NetworkThrottlingRate.valueIn(network.getDataCenterId()); + if (networkRate != null && networkRate > 0) { + return networkRate; + } + return -1; } @Override ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Guest/Public nics on VR should pick network rate from network offering > ---------------------------------------------------------------------- > > Key: CLOUDSTACK-10173 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-10173 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Reporter: Rohit Yadav > Assignee: Rohit Yadav > Fix For: Future, 4.11.0.0 > > > Per the docs: > http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/service_offerings.html#network-throttling > Guest/public nics on VR should pick network rate from the VR's network > offering (or as fallback use the rate defined in the network.throttling.rate > global setting) however it is not the case. -- This message was sent by Atlassian JIRA (v6.4.14#64029)