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 150e3dc19fd..e2bd31d12a6 100755 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java @@ -132,7 +132,14 @@ public class UcsManagerImpl implements UcsManager { @Override @DB - public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) { + public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) { + SearchCriteriaService 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()); @@ -141,6 +148,7 @@ public class UcsManagerImpl implements UcsManager { vo.setZoneId(cmd.getZoneId()); vo.setName(cmd.getName()); + Transaction txn = Transaction.currentTxn(); txn.start(); ucsDao.persist(vo);