This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch netris-update-vpc-and-tier-names
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit bd4e652128c4a149fd8d59e3296d8a10ab95db7f
Author: Nicolas Vazquez <nicovazque...@gmail.com>
AuthorDate: Thu Feb 13 12:14:30 2025 -0300

    Enable Autoscaling on Netris for CPU and memory (#51)
    
    * Enable Autoscaling on Netris for CPU and memory
    
    * Fix monitor autoscale group and cleanup
    
    * Rename autoscaling group method
    
    * Integrate Autoscaling by allowing to update LB rules
    
    * Refactor according to the SDK changes
---
 .../com/cloud/network/netris/NetrisService.java    |  2 +-
 .../resources/META-INF/db/schema-41910to42000.sql  |  4 +++
 .../apache/cloudstack/resource/NetrisResource.java |  2 +-
 .../apache/cloudstack/service/NetrisApiClient.java |  2 +-
 .../cloudstack/service/NetrisApiClientImpl.java    | 41 +++++++++++++---------
 .../apache/cloudstack/service/NetrisElement.java   | 18 +++++++++-
 .../cloudstack/service/NetrisServiceImpl.java      |  2 +-
 .../com/cloud/network/as/AutoScaleManagerImpl.java | 14 ++++----
 .../network/lb/LoadBalancingRulesManagerImpl.java  |  1 +
 .../com/cloud/server/ConfigurationServerImpl.java  | 31 ++++++++--------
 .../cloud/network/as/AutoScaleManagerImplTest.java | 16 ++++-----
 .../cloudstack/service/NetrisServiceMockTest.java  |  2 +-
 12 files changed, 84 insertions(+), 51 deletions(-)

diff --git a/api/src/main/java/com/cloud/network/netris/NetrisService.java 
b/api/src/main/java/com/cloud/network/netris/NetrisService.java
index d386d4f8d58..43f94e0c6b7 100644
--- a/api/src/main/java/com/cloud/network/netris/NetrisService.java
+++ b/api/src/main/java/com/cloud/network/netris/NetrisService.java
@@ -55,6 +55,6 @@ public interface NetrisService {
 
     boolean releaseNatIp(long zoneId, String publicIp);
 
-    boolean createLbRule(NetrisNetworkRule rule);
+    boolean createOrUpdateLbRule(NetrisNetworkRule rule);
     boolean deleteLbRule(NetrisNetworkRule rule);
 }
diff --git 
a/engine/schema/src/main/resources/META-INF/db/schema-41910to42000.sql 
b/engine/schema/src/main/resources/META-INF/db/schema-41910to42000.sql
index 739c5644859..be98ec33d33 100644
--- a/engine/schema/src/main/resources/META-INF/db/schema-41910to42000.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-41910to42000.sql
@@ -459,3 +459,7 @@ CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.static_routes', 
'next_hop', 'varchar
 
 -- Add `for_router` to `user_ip_address` table
 CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.user_ip_address', 'for_router', 
'tinyint(1) DEFAULT 0 COMMENT "True if the ip address is used by Domain Router 
to expose services"');
+
+-- Add Netris Autoscaling rules
+INSERT IGNORE INTO `cloud`.`counter` (uuid, provider, source, name, value, 
created) VALUES (UUID(), 'Netris', 'cpu', 'VM CPU - average percentage', 
'vm.cpu.average.percentage', NOW());
+INSERT IGNORE INTO `cloud`.`counter` (uuid, provider, source, name, value, 
created) VALUES (UUID(), 'Netris', 'memory', 'VM Memory - average percentage', 
'vm.memory.average.percentage', NOW());
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResource.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResource.java
index 5d4777d610c..2a02b5de1b4 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResource.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/resource/NetrisResource.java
@@ -359,7 +359,7 @@ public class NetrisResource implements ServerResource {
     }
 
     private Answer executeRequest(CreateOrUpdateNetrisLoadBalancerRuleCommand 
cmd) {
-        boolean result = netrisApiClient.createLbRule(cmd);
+        boolean result = netrisApiClient.createOrUpdateLbRule(cmd);
         if (!result) {
             return new NetrisAnswer(cmd, false, String.format("Failed to 
create Netris LB rule for %s: %s, " +
                     "for private port: %s and public port: %s", 
getNetworkType(cmd.isVpc()), cmd.getName(), cmd.getPrivatePort(), 
cmd.getPublicPort(), cmd.getPublicPort()));
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClient.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClient.java
index 91351bf21f7..5957805d22d 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClient.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClient.java
@@ -86,6 +86,6 @@ public interface NetrisApiClient {
     boolean addOrUpdateStaticRoute(AddOrUpdateNetrisStaticRouteCommand cmd);
     boolean deleteStaticRoute(DeleteNetrisStaticRouteCommand cmd);
     boolean releaseNatIp(ReleaseNatIpCommand cmd);
-    boolean createLbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand cmd);
+    boolean createOrUpdateLbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand 
cmd);
     boolean deleteLbRule(DeleteNetrisLoadBalancerRuleCommand cmd);
 }
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
index e49c7c5882a..0136a96cb79 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
@@ -56,11 +56,13 @@ import io.netris.model.IpTreeAllocationTenant;
 import io.netris.model.IpTreeSubnet;
 import io.netris.model.IpTreeSubnetSites;
 import io.netris.model.L4LBSite;
+import io.netris.model.L4LbAddItem;
+import io.netris.model.L4LbEditItem;
 import io.netris.model.L4LbTenant;
 import io.netris.model.L4LbVpc;
 import io.netris.model.L4LoadBalancerBackendItem;
 import io.netris.model.L4LoadBalancerItem;
-import io.netris.model.L4lbAddItem;
+import io.netris.model.L4lbAddOrUpdateItem;
 import io.netris.model.L4lbresBody;
 import io.netris.model.NatBodySiteSite;
 import io.netris.model.NatBodyVpcVpc;
@@ -97,6 +99,7 @@ import io.netris.model.VnetResDeleteBody;
 import io.netris.model.VnetResListBody;
 import io.netris.model.VnetsBody;
 import io.netris.model.response.AuthResponse;
+import io.netris.model.response.L4LbEditResponse;
 import io.netris.model.response.TenantResponse;
 import io.netris.model.response.TenantsResponse;
 import org.apache.cloudstack.agent.api.CreateNetrisACLCommand;
@@ -116,6 +119,7 @@ import org.apache.cloudstack.agent.api.ReleaseNatIpCommand;
 import org.apache.cloudstack.agent.api.SetupNetrisPublicRangeCommand;
 import org.apache.cloudstack.resource.NetrisResourceObjectUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -612,7 +616,7 @@ public class NetrisApiClientImpl implements NetrisApiClient 
{
     }
 
     @Override
-    public boolean createLbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand 
cmd) {
+    public boolean 
createOrUpdateLbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand cmd) {
         boolean isVpc = cmd.isVpc();
         Long networkResourceId = cmd.getId();
         String networkResourceName = cmd.getName();
@@ -641,16 +645,21 @@ public class NetrisApiClientImpl implements 
NetrisApiClient {
             if (Boolean.FALSE.equals(result)) {
                 logger.warn("Could not find the Netris LB rule with name {}", 
lbName);
             }
-            if (!matchingLbId.isEmpty()) {
-                logger.warn("LB rule by name: {} already exists", lbName);
-                return true;
-            }
-
-            L4lbAddItem l4lbAddItem = getL4LbRule(cmd, vpcResource, lbName, 
publicIp, lbBackends);
+            boolean updateRule = !matchingLbId.isEmpty();
+            L4lbAddOrUpdateItem l4lbAddItem = getL4LbRule(cmd, vpcResource, 
lbName, publicIp, lbBackends, updateRule);
             L4LoadBalancerApi loadBalancerApi = 
apiClient.getApiStubForMethod(L4LoadBalancerApi.class);
-            ResAddEditBody response = 
loadBalancerApi.apiV2L4lbPost(l4lbAddItem);
-            if (Objects.isNull(response) || 
Boolean.FALSE.equals(response.isIsSuccess())) {
-                throw new CloudRuntimeException("Failed to create Netris LB 
rule");
+            boolean success;
+            L4LbEditResponse editResponse = null;
+            ResAddEditBody createResponse = null;
+            if (updateRule) {
+                editResponse = loadBalancerApi.apiV2L4lbIdPut((L4LbEditItem) 
l4lbAddItem, matchingLbId.get(0).intValue());
+                success = editResponse.isIsSuccess();
+            } else {
+                createResponse = loadBalancerApi.apiV2L4lbPost((L4LbAddItem) 
l4lbAddItem);
+                success = createResponse.isIsSuccess();
+            }
+            if (ObjectUtils.allNull(editResponse, createResponse) || 
Boolean.FALSE.equals(success)) {
+                throw new CloudRuntimeException(String.format("Failed to %s 
Netris LB rule", updateRule ? "update" : "create"));
             }
         } catch (ApiException e) {
             logAndThrowException("Failed to create Netris load balancer rule", 
e);
@@ -658,9 +667,9 @@ public class NetrisApiClientImpl implements NetrisApiClient 
{
         return true;
     }
 
-    private L4lbAddItem 
getL4LbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand cmd, VPCListing 
vpcResource, String lbName,
-                             String publicIp, List<NetrisLbBackend> 
lbBackends) {
-        L4lbAddItem l4lbAddItem = new L4lbAddItem();
+    private L4lbAddOrUpdateItem 
getL4LbRule(CreateOrUpdateNetrisLoadBalancerRuleCommand cmd, VPCListing 
vpcResource, String lbName,
+                                            String publicIp, 
List<NetrisLbBackend> lbBackends, boolean updateRule) {
+        L4lbAddOrUpdateItem l4lbAddItem = updateRule ? new L4LbEditItem() : 
new L4LbAddItem();
         try {
             l4lbAddItem.setName(lbName);
 
@@ -685,7 +694,7 @@ public class NetrisApiClientImpl implements NetrisApiClient 
{
             l4lbAddItem.setVpc(vpc);
 
             l4lbAddItem.setAutomatic(false);
-            l4lbAddItem.setIpFamily(NetUtils.isIpv4(publicIp) ? 
L4lbAddItem.IpFamilyEnum.IPv4 : L4lbAddItem.IpFamilyEnum.IPv6);
+            l4lbAddItem.setIpFamily(NetUtils.isIpv4(publicIp) ? 
L4lbAddOrUpdateItem.IpFamilyEnum.IPv4 : L4lbAddOrUpdateItem.IpFamilyEnum.IPv6);
             l4lbAddItem.setIp(publicIp);
             l4lbAddItem.setStatus("enable");
 
@@ -698,7 +707,7 @@ public class NetrisApiClientImpl implements NetrisApiClient 
{
             }
             l4lbAddItem.setBackend(backends);
             l4lbAddItem.setPort(Integer.valueOf(cmd.getPublicPort()));
-            l4lbAddItem.setHealthCheck(L4lbAddItem.HealthCheckEnum.NONE);
+            
l4lbAddItem.setHealthCheck(L4lbAddOrUpdateItem.HealthCheckEnum.NONE);
         } catch (Exception e) {
             throw new CloudRuntimeException("Failed to create Netris load 
balancer rule", e);
         }
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
index 12e7239a8ee..27f8c99fcd0 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
@@ -44,6 +44,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
 import com.cloud.network.PublicIpAddress;
 import com.cloud.network.SDNProviderNetworkRule;
 import com.cloud.network.SDNProviderOpObject;
+import com.cloud.network.as.AutoScaleCounter;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.network.dao.IPAddressVO;
 import com.cloud.network.dao.LoadBalancerVMMapDao;
@@ -91,6 +92,7 @@ import com.cloud.vm.ReservationContext;
 import com.cloud.vm.VMInstanceVO;
 import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.dao.VMInstanceDao;
+import com.google.gson.Gson;
 import org.apache.cloudstack.StartupNetrisCommand;
 import org.apache.cloudstack.api.ApiConstants;
 import com.cloud.network.netris.NetrisNetworkRule;
@@ -147,6 +149,16 @@ public class NetrisElement extends AdapterBase implements 
DhcpServiceProvider, D
 
     private final Map<Network.Service, Map<Network.Capability, String>> 
capabilities = initCapabilities();
 
+    protected static List<AutoScaleCounter> getNetrisAutoScaleCounters() {
+        AutoScaleCounter counter;
+        final List<AutoScaleCounter> counterList = new ArrayList<>();
+        counter = new 
AutoScaleCounter(AutoScaleCounter.AutoScaleCounterType.Cpu);
+        counterList.add(counter);
+        counter = new 
AutoScaleCounter(AutoScaleCounter.AutoScaleCounterType.Memory);
+        counterList.add(counter);
+        return counterList;
+    }
+
     private static Map<Network.Service, Map<Network.Capability, String>> 
initCapabilities() {
         Map<Network.Service, Map<Network.Capability, String>> capabilities = 
new HashMap<>();
 
@@ -166,6 +178,10 @@ public class NetrisElement extends AdapterBase implements 
DhcpServiceProvider, D
         lbCapabilities.put(Network.Capability.SupportedProtocols, "tcp, udp");
         lbCapabilities.put(Network.Capability.SupportedStickinessMethods, 
VirtualRouterElement.getHAProxyStickinessCapability());
         lbCapabilities.put(Network.Capability.LbSchemes, String.join(",", 
LoadBalancerContainer.Scheme.Internal.name(), 
LoadBalancerContainer.Scheme.Public.name()));
+        final Gson gson = new Gson();
+        final String autoScaleCounterList = 
gson.toJson(getNetrisAutoScaleCounters());
+        lbCapabilities.put(Network.Capability.AutoScaleCounters, 
autoScaleCounterList);
+        lbCapabilities.put(Network.Capability.VmAutoScaling, "true");
 
         capabilities.put(Network.Service.Lb, lbCapabilities);
         capabilities.put(Network.Service.PortForwarding, null);
@@ -750,7 +766,7 @@ public class NetrisElement extends AdapterBase implements 
DhcpServiceProvider, D
                     .lbBackends(lbBackends)
                     .build();
             if (Arrays.asList(FirewallRule.State.Add, 
FirewallRule.State.Active).contains(loadBalancingRule.getState())) {
-                result &= netrisService.createLbRule(networkRule);
+                result &= netrisService.createOrUpdateLbRule(networkRule);
             } else if (loadBalancingRule.getState() == 
FirewallRule.State.Revoke) {
                 result &= netrisService.deleteLbRule(networkRule);
             }
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
index 62064c1ac07..45e9147d632 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
@@ -458,7 +458,7 @@ public class NetrisServiceImpl implements NetrisService, 
Configurable {
     }
 
     @Override
-    public boolean createLbRule(NetrisNetworkRule rule) {
+    public boolean createOrUpdateLbRule(NetrisNetworkRule rule) {
         SDNProviderNetworkRule baseRule = rule.getBaseRule();
         CreateOrUpdateNetrisLoadBalancerRuleCommand cmd = new 
CreateOrUpdateNetrisLoadBalancerRuleCommand(baseRule.getZoneId(), 
baseRule.getAccountId(),
                 baseRule.getDomainId(), baseRule.getNetworkResourceName(), 
baseRule.getNetworkResourceId(), baseRule.isVpcResource(),
diff --git 
a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java 
b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java
index 5e7a4a0c4ef..83b747cf830 100644
--- a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java
@@ -2257,8 +2257,9 @@ public class AutoScaleManagerImpl extends ManagerBase 
implements AutoScaleManage
             Network.Provider provider = 
getLoadBalancerServiceProvider(asGroup.getLoadBalancerId());
             if (Network.Provider.Netscaler.equals(provider)) {
                 checkNetScalerAsGroup(asGroup);
-            } else if (Network.Provider.VirtualRouter.equals(provider) || 
Network.Provider.VPCVirtualRouter.equals(provider)) {
-                checkVirtualRouterAsGroup(asGroup);
+            } else if (Network.Provider.VirtualRouter.equals(provider) || 
Network.Provider.VPCVirtualRouter.equals(provider) ||
+                       Network.Provider.Netris.equals(provider)) {
+                checkAutoscalingGroup(asGroup);
             }
         }
     }
@@ -2633,7 +2634,7 @@ public class AutoScaleManagerImpl extends ManagerBase 
implements AutoScaleManage
         countersNumberMap.put(key, countersNumberMap.get(key) + 1);
     }
 
-    protected void monitorVirtualRouterAsGroup(AutoScaleVmGroupVO asGroup) {
+    protected void monitorAutoscalingGroup(AutoScaleVmGroupVO asGroup) {
         if (!checkAsGroupMaxAndMinMembers(asGroup)) {
             return;
         }
@@ -2663,7 +2664,7 @@ public class AutoScaleManagerImpl extends ManagerBase 
implements AutoScaleManage
         }
     }
 
-    protected void checkVirtualRouterAsGroup(AutoScaleVmGroupVO asGroup) {
+    protected void checkAutoscalingGroup(AutoScaleVmGroupVO asGroup) {
         AutoScaleVmGroupTO groupTO = lbRulesMgr.toAutoScaleVmGroupTO(asGroup);
 
         Map<String, Double> countersMap = new HashMap<>();
@@ -3005,8 +3006,9 @@ public class AutoScaleManagerImpl extends ManagerBase 
implements AutoScaleManage
                     Network.Provider provider = 
getLoadBalancerServiceProvider(asGroup.getLoadBalancerId());
                     if (Network.Provider.Netscaler.equals(provider)) {
                         logger.debug("Skipping the monitoring on AutoScale 
VmGroup with Netscaler provider: " + asGroup);
-                    } else if (Network.Provider.VirtualRouter.equals(provider) 
|| Network.Provider.VPCVirtualRouter.equals(provider)) {
-                        monitorVirtualRouterAsGroup(asGroup);
+                    } else if (Network.Provider.VirtualRouter.equals(provider) 
|| Network.Provider.VPCVirtualRouter.equals(provider) ||
+                               Network.Provider.Netris.equals(provider)) {
+                        monitorAutoscalingGroup(asGroup);
                     }
                 }
             } catch (final Exception e) {
diff --git 
a/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java 
b/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
index bb1f4ec1b9b..c1ec91e69b9 100644
--- 
a/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
+++ 
b/server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
@@ -1005,6 +1005,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends 
ManagerBase implements
             return false;
         }
         if (provider.get(0) == Provider.Netscaler || provider.get(0) == 
Provider.F5BigIp ||
+            provider.get(0) == Provider.Netris ||
             provider.get(0) == Provider.VirtualRouter || provider.get(0) == 
Provider.VPCVirtualRouter) {
             return true;
         }
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java 
b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index 33b8db99bb3..dfc0e23f645 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -1199,51 +1199,52 @@ public class ConfigurationServerImpl extends 
ManagerBase implements Configuratio
 
                 // Offering #9 - network offering for NSX provider - NATTED 
mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING,
 "Offering for NSX enabled networks - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, false, true, 
Provider.Nsx);
+                        NetworkOffering.NetworkMode.NATTED, false, true, 
false, Provider.Nsx);
 
                 // Offering #10 - network offering for NSX provider - ROUTED 
mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING,
 "Offering for NSX enabled networks - ROUTED mode",
-                        NetworkOffering.NetworkMode.ROUTED, false, true, 
Provider.Nsx);
+                        NetworkOffering.NetworkMode.ROUTED, false, true, 
false, Provider.Nsx);
 
                 // Offering #11 - network offering for NSX provider for VPCs - 
NATTED mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, true, true, 
Provider.Nsx);
+                        NetworkOffering.NetworkMode.NATTED, true, true, false, 
Provider.Nsx);
 
                 // Offering #12 - network offering for NSX provider for VPCs - 
ROUTED mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - ROUTED mode",
-                        NetworkOffering.NetworkMode.ROUTED, true, true, 
Provider.Nsx);
+                        NetworkOffering.NetworkMode.ROUTED, true, true, false, 
Provider.Nsx);
 
                 // Offering #13 - network offering for NSX provider for VPCs 
with Internal LB - NATTED mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC_WITH_ILB,
 "Offering for NSX enabled networks on VPCs with internal LB - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, true, false, 
Provider.Nsx);
+                        NetworkOffering.NetworkMode.NATTED, true, false, 
false, Provider.Nsx);
 
                 // Offering #14 - network offering for Netris provider for 
VPCs - ROUTED mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NETRIS_OFFERING_FOR_VPC,
 "Offering for Netris enabled networks on VPCs - ROUTED mode",
-                        NetworkOffering.NetworkMode.ROUTED, true, true, 
Provider.Netris);
+                        NetworkOffering.NetworkMode.ROUTED, true, true, false, 
Provider.Netris);
 
                 // Offering #15 - network offering for Netris provider for 
VPCs - NATTED mode
                 
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NETRIS_OFFERING_FOR_VPC,
 "Offering for Netris enabled networks on VPCs - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, true, true, 
Provider.Netris);
+                        NetworkOffering.NetworkMode.NATTED, true, true, true, 
Provider.Netris);
             }
         });
     }
 
     private void createAndPersistDefaultProviderOffering(String name, String 
displayText, NetworkOffering.NetworkMode networkMode,
-                                                    boolean forVpc, boolean 
publicLB, Provider provider) {
-        NetworkOfferingVO defaultNatProviderNetworkOffering =
+                                                    boolean forVpc, boolean 
publicLB, boolean supportVmAutoscaling, Provider provider) {
+        NetworkOfferingVO providerNetworkOffering =
                 new NetworkOfferingVO(name, displayText, TrafficType.Guest, 
false, false, null,
                         null, true, Availability.Optional, null, 
GuestType.Isolated, false,
                         false, false, false, false, forVpc);
-        defaultNatProviderNetworkOffering.setPublicLb(publicLB);
-        defaultNatProviderNetworkOffering.setInternalLb(!publicLB);
-        defaultNatProviderNetworkOffering.setNetworkMode(networkMode);
-        
defaultNatProviderNetworkOffering.setState(NetworkOffering.State.Enabled);
-        defaultNatProviderNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(defaultNatProviderNetworkOffering);
+        providerNetworkOffering.setPublicLb(publicLB);
+        providerNetworkOffering.setInternalLb(!publicLB);
+        providerNetworkOffering.setNetworkMode(networkMode);
+        providerNetworkOffering.setState(NetworkOffering.State.Enabled);
+        providerNetworkOffering.setSupportsVmAutoScaling(supportVmAutoscaling);
+        providerNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(providerNetworkOffering);
 
         Map<Service, Provider> serviceProviderMap = 
getServicesAndProvidersForProviderNetwork(networkMode, forVpc, provider);
         for (Map.Entry<Network.Service, Network.Provider> service : 
serviceProviderMap.entrySet()) {
             NetworkOfferingServiceMapVO offService =
-                    new 
NetworkOfferingServiceMapVO(defaultNatProviderNetworkOffering.getId(), 
service.getKey(), service.getValue());
+                    new 
NetworkOfferingServiceMapVO(providerNetworkOffering.getId(), service.getKey(), 
service.getValue());
             _ntwkOfferingServiceMapDao.persist(offService);
             logger.trace("Added service for the network offering: " + 
offService);
         }
diff --git 
a/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java 
b/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java
index b391aeb9f07..23f5a2a05e9 100644
--- a/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java
+++ b/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java
@@ -1572,11 +1572,11 @@ public class AutoScaleManagerImplTest {
         
when(asVmGroupMock.getState()).thenReturn(AutoScaleVmGroup.State.ENABLED);
         when(asVmGroupMock.getLoadBalancerId()).thenReturn(loadBalancerId);
         
Mockito.doReturn(Network.Provider.VirtualRouter).when(autoScaleManagerImplSpy).getLoadBalancerServiceProvider(loadBalancerId);
-        
Mockito.doNothing().when(autoScaleManagerImplSpy).checkVirtualRouterAsGroup(asVmGroupMock);
+        
Mockito.doNothing().when(autoScaleManagerImplSpy).checkAutoscalingGroup(asVmGroupMock);
 
         autoScaleManagerImplSpy.checkAutoScaleVmGroup(asVmGroupMock);
 
-        
Mockito.verify(autoScaleManagerImplSpy).checkVirtualRouterAsGroup(asVmGroupMock);
+        
Mockito.verify(autoScaleManagerImplSpy).checkAutoscalingGroup(asVmGroupMock);
         Mockito.verify(autoScaleManagerImplSpy, 
never()).checkNetScalerAsGroup(asVmGroupMock);
     }
 
@@ -1585,11 +1585,11 @@ public class AutoScaleManagerImplTest {
         
when(asVmGroupMock.getState()).thenReturn(AutoScaleVmGroup.State.ENABLED);
         when(asVmGroupMock.getLoadBalancerId()).thenReturn(loadBalancerId);
         
Mockito.doReturn(Network.Provider.VPCVirtualRouter).when(autoScaleManagerImplSpy).getLoadBalancerServiceProvider(loadBalancerId);
-        
Mockito.doNothing().when(autoScaleManagerImplSpy).checkVirtualRouterAsGroup(asVmGroupMock);
+        
Mockito.doNothing().when(autoScaleManagerImplSpy).checkAutoscalingGroup(asVmGroupMock);
 
         autoScaleManagerImplSpy.checkAutoScaleVmGroup(asVmGroupMock);
 
-        
Mockito.verify(autoScaleManagerImplSpy).checkVirtualRouterAsGroup(asVmGroupMock);
+        
Mockito.verify(autoScaleManagerImplSpy).checkAutoscalingGroup(asVmGroupMock);
         Mockito.verify(autoScaleManagerImplSpy, 
never()).checkNetScalerAsGroup(asVmGroupMock);
     }
 
@@ -1602,7 +1602,7 @@ public class AutoScaleManagerImplTest {
 
         autoScaleManagerImplSpy.checkAutoScaleVmGroup(asVmGroupMock);
 
-        Mockito.verify(autoScaleManagerImplSpy, 
never()).checkVirtualRouterAsGroup(asVmGroupMock);
+        Mockito.verify(autoScaleManagerImplSpy, 
never()).checkAutoscalingGroup(asVmGroupMock);
         
Mockito.verify(autoScaleManagerImplSpy).checkNetScalerAsGroup(asVmGroupMock);
     }
 
@@ -1984,7 +1984,7 @@ public class AutoScaleManagerImplTest {
         Mockito.doNothing().when(autoScaleManagerImplSpy).doScaleUp(vmGroupId, 
1);
         
Mockito.doNothing().when(autoScaleManagerImplSpy).cleanupAsVmGroupStatistics(groupTO);
 
-        autoScaleManagerImplSpy.checkVirtualRouterAsGroup(asVmGroupMock);
+        autoScaleManagerImplSpy.checkAutoscalingGroup(asVmGroupMock);
 
         Mockito.verify(autoScaleManagerImplSpy).doScaleUp(vmGroupId, 1);
     }
@@ -2000,7 +2000,7 @@ public class AutoScaleManagerImplTest {
         
Mockito.doNothing().when(autoScaleManagerImplSpy).doScaleDown(vmGroupId);
         
Mockito.doNothing().when(autoScaleManagerImplSpy).cleanupAsVmGroupStatistics(groupTO);
 
-        autoScaleManagerImplSpy.checkVirtualRouterAsGroup(asVmGroupMock);
+        autoScaleManagerImplSpy.checkAutoscalingGroup(asVmGroupMock);
 
         Mockito.verify(autoScaleManagerImplSpy).doScaleDown(vmGroupId);
     }
@@ -2211,7 +2211,7 @@ public class AutoScaleManagerImplTest {
         
Mockito.doNothing().when(autoScaleManagerImplSpy).getVmStatsFromHosts(groupTO);
         
Mockito.doNothing().when(autoScaleManagerImplSpy).getNetworkStatsFromVirtualRouter(groupTO);
 
-        autoScaleManagerImplSpy.monitorVirtualRouterAsGroup(asVmGroupMock);
+        autoScaleManagerImplSpy.monitorAutoscalingGroup(asVmGroupMock);
 
         Mockito.verify(autoScaleManagerImplSpy).getVmStatsFromHosts(groupTO);
         
Mockito.verify(autoScaleManagerImplSpy).getNetworkStatsFromVirtualRouter(groupTO);
diff --git 
a/server/src/test/java/org/apache/cloudstack/service/NetrisServiceMockTest.java 
b/server/src/test/java/org/apache/cloudstack/service/NetrisServiceMockTest.java
index 99f319d6de7..7dbfc0b9cbb 100644
--- 
a/server/src/test/java/org/apache/cloudstack/service/NetrisServiceMockTest.java
+++ 
b/server/src/test/java/org/apache/cloudstack/service/NetrisServiceMockTest.java
@@ -107,7 +107,7 @@ public class NetrisServiceMockTest implements NetrisService 
{
     }
 
     @Override
-    public boolean createLbRule(NetrisNetworkRule rule) {
+    public boolean createOrUpdateLbRule(NetrisNetworkRule rule) {
         return true;
     }
 

Reply via email to