Updated Branches:
  refs/heads/master a5c2d24ee -> 84ed1fee6

CloudStack CLOUDSTACK-3307
UCS:DB: Same UCS manager can be added multiple times


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

Branch: refs/heads/master
Commit: 84ed1fee6bf608eae1f656e7c7f1224e7f858339
Parents: a5c2d24
Author: frank <[email protected]>
Authored: Mon Aug 5 11:09:51 2013 -0700
Committer: frank <[email protected]>
Committed: Mon Aug 5 11:10:54 2013 -0700

----------------------------------------------------------------------
 .../com/cloud/ucs/manager/UcsManagerImpl.java   | 63 +++++++++++---------
 1 file changed, 34 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/84ed1fee/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java 
b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java
index fdc09d3..e19c72a 100755
--- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java
+++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java
@@ -208,36 +208,41 @@ public class UcsManagerImpl implements UcsManager {
 
     @Override
     @DB
-    public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) {
-       SearchCriteriaService<UcsManagerVO, UcsManagerVO> q = 
SearchCriteria2.create(UcsManagerVO.class);
-       q.addAnd(q.getEntity().getUrl(), Op.EQ, cmd.getUrl());
-       UcsManagerVO mgrvo = q.find();
-       if (mgrvo != null) {
-           throw new IllegalArgumentException(String.format("duplicate UCS 
manager. url[%s] is used by another UCS manager already", cmd.getUrl()));
-       }
-        
-        UcsManagerVO vo = new UcsManagerVO();
-        vo.setUuid(UUID.randomUUID().toString());
-        vo.setPassword(cmd.getPassword());
-        vo.setUrl(cmd.getUrl());
-        vo.setUsername(cmd.getUsername());
-        vo.setZoneId(cmd.getZoneId());
-        vo.setName(cmd.getName());
-
-
-        Transaction txn = Transaction.currentTxn();
-        txn.start();
-        ucsDao.persist(vo);
-        txn.commit();
-        UcsManagerResponse rsp = new UcsManagerResponse();
-        rsp.setId(String.valueOf(vo.getId()));
-        rsp.setName(vo.getName());
-        rsp.setUrl(vo.getUrl());
-        rsp.setZoneId(String.valueOf(vo.getZoneId()));
-
-        discoverBlades(vo);
+    public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) {
+        SearchCriteriaService<UcsManagerVO, UcsManagerVO> q = 
SearchCriteria2.create(UcsManagerVO.class);
+        q.addAnd(q.getEntity().getUrl(), Op.EQ, cmd.getUrl());
+        UcsManagerVO mgrvo = q.find();
+        if (mgrvo != null) {
+            throw new IllegalArgumentException(String.format("duplicate UCS 
manager. url[%s] is used by another UCS manager already", cmd.getUrl()));
+        }
 
-        return rsp;
+        try {
+            UcsManagerVO vo = new UcsManagerVO();
+            vo.setUuid(UUID.randomUUID().toString());
+            vo.setPassword(cmd.getPassword());
+            vo.setUrl(cmd.getUrl());
+            vo.setUsername(cmd.getUsername());
+            vo.setZoneId(cmd.getZoneId());
+            vo.setName(cmd.getName());
+
+            Transaction txn = Transaction.currentTxn();
+            txn.start();
+            mgrvo = ucsDao.persist(vo);
+            txn.commit();
+            UcsManagerResponse rsp = new UcsManagerResponse();
+            rsp.setId(String.valueOf(vo.getId()));
+            rsp.setName(vo.getName());
+            rsp.setUrl(vo.getUrl());
+            rsp.setZoneId(String.valueOf(vo.getZoneId()));
+
+            discoverBlades(vo);
+            return rsp;
+        } catch (CloudRuntimeException e) {
+            if (mgrvo != null) {
+                ucsDao.remove(mgrvo.getId());
+            }
+            throw e;
+        }
     }
 
     private String getCookie(Long ucsMgrId) {

Reply via email to