[ 
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)

Reply via email to