You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pr...@apache.org on 2012/11/16 11:00:31 UTC

[16/50] git commit: CS-16168:AutoScale- Deletion of Account doesn't delete the AutoScale LB rule

CS-16168:AutoScale- Deletion of Account doesn't delete the AutoScale LB rule


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/d2155890
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/d2155890
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/d2155890

Branch: refs/heads/master
Commit: d2155890cc87af636c69681a559d72793365740c
Parents: 58db4d0
Author: Deepak Garg <de...@gmail.com>
Authored: Wed Sep 12 21:46:04 2012 +0530
Committer: Vijay Venkatachalam <vi...@citrix.com>
Committed: Fri Nov 16 10:56:57 2012 +0530

----------------------------------------------------------------------
 .../src/com/cloud/network/as/AutoScaleManager.java |    2 +
 .../com/cloud/network/as/AutoScaleManagerImpl.java |   20 +++++++++++++-
 .../cloud/network/as/dao/AutoScalePolicyDao.java   |    1 +
 .../network/as/dao/AutoScalePolicyDaoImpl.java     |    9 ++++++
 .../network/as/dao/AutoScaleVmProfileDao.java      |    2 +
 .../network/as/dao/AutoScaleVmProfileDaoImpl.java  |    9 ++++++
 .../src/com/cloud/network/as/dao/ConditionDao.java |    1 +
 .../com/cloud/network/as/dao/ConditionDaoImpl.java |    9 ++++++-
 .../network/lb/LoadBalancingRulesManagerImpl.java  |    2 +-
 server/src/com/cloud/user/AccountManagerImpl.java  |   11 ++++++++
 10 files changed, 62 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/AutoScaleManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/AutoScaleManager.java b/server/src/com/cloud/network/as/AutoScaleManager.java
index 7ea7807..ac822dc 100644
--- a/server/src/com/cloud/network/as/AutoScaleManager.java
+++ b/server/src/com/cloud/network/as/AutoScaleManager.java
@@ -17,4 +17,6 @@
 package com.cloud.network.as;
 
 public interface AutoScaleManager extends AutoScaleService {
+
+    void cleanUpAutoScaleResources(Long accountId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
index b3c997a..ab8c452 100644
--- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
+++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
@@ -94,8 +94,8 @@ import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.net.NetUtils;
 
-@Local(value = { AutoScaleService.class })
-public class AutoScaleManagerImpl<Type> implements AutoScaleService, Manager {
+@Local(value = { AutoScaleService.class, AutoScaleManager.class })
+public class AutoScaleManagerImpl<Type> implements AutoScaleManager, AutoScaleService, Manager {
     private static final Logger s_logger = Logger.getLogger(AutoScaleManagerImpl.class);
 
     String _name;
@@ -1129,4 +1129,20 @@ public class AutoScaleManagerImpl<Type> implements AutoScaleService, Manager {
         return success;
     }
 
+    public void cleanUpAutoScaleResources(Long accountId) {
+        // cleans Autoscale VmProfiles, AutoScale Policies and Conditions belonging to an account
+        int count = 0;
+        count = _autoScaleVmProfileDao.removeByAccountId(accountId);
+        if (count > 0) {
+            s_logger.debug("Deleted " + count + " AutoScale Vm Profile for account Id: " + accountId);
+        }
+        count = _autoScalePolicyDao.removeByAccountId(accountId);
+        if (count > 0) {
+            s_logger.debug("Deleted " + count + " AutoScale Policies for account Id: " + accountId);
+        }
+        count = _conditionDao.removeByAccountId(accountId);
+        if (count > 0) {
+            s_logger.debug("Deleted " + count + " Conditions for account Id: " + accountId);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/AutoScalePolicyDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/AutoScalePolicyDao.java b/server/src/com/cloud/network/as/dao/AutoScalePolicyDao.java
index 8edfa94..51b2a94 100644
--- a/server/src/com/cloud/network/as/dao/AutoScalePolicyDao.java
+++ b/server/src/com/cloud/network/as/dao/AutoScalePolicyDao.java
@@ -20,4 +20,5 @@ import com.cloud.network.as.AutoScalePolicyVO;
 import com.cloud.utils.db.GenericDao;
 
 public interface AutoScalePolicyDao extends GenericDao<AutoScalePolicyVO, Long> {
+    int removeByAccountId(long accountId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java b/server/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java
index 5dfe080..f8f5491 100644
--- a/server/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java
+++ b/server/src/com/cloud/network/as/dao/AutoScalePolicyDaoImpl.java
@@ -20,7 +20,16 @@ import javax.ejb.Local;
 
 import com.cloud.network.as.AutoScalePolicyVO;
 import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchCriteria;
 
 @Local(value = { AutoScalePolicyDao.class })
 public class AutoScalePolicyDaoImpl extends GenericDaoBase<AutoScalePolicyVO, Long>  implements AutoScalePolicyDao {
+
+    public int removeByAccountId(long accountId) {
+        SearchCriteria<AutoScalePolicyVO> sc = createSearchCriteria();
+
+        sc.addAnd("accountId", SearchCriteria.Op.EQ, accountId);
+
+        return remove(sc);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java b/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java
index 0803571..d97e848 100644
--- a/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java
+++ b/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDao.java
@@ -20,4 +20,6 @@ import com.cloud.network.as.AutoScaleVmProfileVO;
 import com.cloud.utils.db.GenericDao;
 
 public interface AutoScaleVmProfileDao extends GenericDao<AutoScaleVmProfileVO, Long> {
+
+    int removeByAccountId(long accountId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java b/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java
index 12392c3..d2b162b 100644
--- a/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java
+++ b/server/src/com/cloud/network/as/dao/AutoScaleVmProfileDaoImpl.java
@@ -20,7 +20,16 @@ import javax.ejb.Local;
 
 import com.cloud.network.as.AutoScaleVmProfileVO;
 import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.SearchCriteria;
 
 @Local(value = { AutoScaleVmProfileDao.class })
 public class AutoScaleVmProfileDaoImpl extends GenericDaoBase<AutoScaleVmProfileVO, Long>  implements AutoScaleVmProfileDao {
+
+    @Override
+    public int removeByAccountId(long accountId) {
+        SearchCriteria<AutoScaleVmProfileVO> sc = createSearchCriteria();
+        sc.addAnd("accountId", SearchCriteria.Op.EQ, accountId);
+
+        return remove(sc);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/ConditionDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/ConditionDao.java b/server/src/com/cloud/network/as/dao/ConditionDao.java
index bb0f77f..128920d 100644
--- a/server/src/com/cloud/network/as/dao/ConditionDao.java
+++ b/server/src/com/cloud/network/as/dao/ConditionDao.java
@@ -24,4 +24,5 @@ public interface ConditionDao extends GenericDao<ConditionVO, Long> {
 
     ConditionVO findByCounterId(long ctrId);
 
+    int removeByAccountId(long accountId);
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/as/dao/ConditionDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/dao/ConditionDaoImpl.java b/server/src/com/cloud/network/as/dao/ConditionDaoImpl.java
index 338fe19..4f71d45 100644
--- a/server/src/com/cloud/network/as/dao/ConditionDaoImpl.java
+++ b/server/src/com/cloud/network/as/dao/ConditionDaoImpl.java
@@ -38,9 +38,16 @@ public class ConditionDaoImpl extends GenericDaoBase<ConditionVO, Long> implemen
 
     @Override
     public ConditionVO findByCounterId(long ctrId) {
-        // TODO - may consider indexing counterId field in db-schema
         SearchCriteria<ConditionVO> sc = AllFieldsSearch.create();
         sc.setParameters("counterId", ctrId);
         return findOneBy(sc);
     }
+
+    public int removeByAccountId(long accountId) {
+        SearchCriteria<ConditionVO> sc = createSearchCriteria();
+
+        sc.addAnd("accountId", SearchCriteria.Op.EQ, accountId);
+
+        return remove(sc);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
index c97818c..9944384 100755
--- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
+++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
@@ -259,7 +259,7 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
         }
         AutoScaleVmProfile autoScaleVmProfile = _autoScaleVmProfileDao.findById(vmGroup.getProfileId());
         Long autoscaleUserId = autoScaleVmProfile.getAutoScaleUserId();
-        User user = _userDao.findById(autoscaleUserId);
+        User user = _userDao.findByIdIncludingRemoved(autoscaleUserId);
         String apiKey = user.getApiKey();
         String secretKey = user.getSecretKey();
         String csUrl = _configDao.getValue(Config.EndpointeUrl.key());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/d2155890/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java
index b19134d..f595478 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -75,6 +75,7 @@ import com.cloud.network.NetworkManager;
 import com.cloud.network.NetworkVO;
 import com.cloud.network.RemoteAccessVpnVO;
 import com.cloud.network.VpnUserVO;
+import com.cloud.network.as.AutoScaleManager;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.RemoteAccessVpnDao;
@@ -214,6 +215,8 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
     private DomainRouterDao _routerDao;
     @Inject
     Site2SiteVpnManager _vpnMgr;
+    @Inject
+    private AutoScaleManager _autoscaleMgr;
 
     private Adapters<UserAuthenticator> _userAuthenticators;
 
@@ -653,6 +656,14 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
                 s_logger.warn("Fail to delete site-to-site VPN customer gateways for account " + accountId);
             }
 
+            // Delete autoscale resources if any
+            try {
+                _autoscaleMgr.cleanUpAutoScaleResources(accountId);
+            } catch (CloudRuntimeException ex) {
+                s_logger.warn("Failed to cleanup AutoScale resources as a part of account id=" + accountId + " cleanup due to exception:", ex);
+                accountCleanupNeeded = true;
+            }
+
             // delete account specific Virtual vlans (belong to system Public Network) - only when networks are cleaned
             // up successfully
             if (networksDeleted) {