You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2014/07/08 01:36:30 UTC

[2/2] git commit: updated refs/heads/master to 5a96d8e

CLOUDSTACK-7073: Added domainId field to the user table in order to restrict duplicated users creation on the db level


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

Branch: refs/heads/master
Commit: 5a96d8ef5cbc88df366016ae9dd7ee46e4ca417a
Parents: b87a5ce
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Jul 7 15:12:36 2014 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Mon Jul 7 16:21:38 2014 -0700

----------------------------------------------------------------------
 engine/schema/src/com/cloud/user/UserVO.java          |  6 ++++++
 engine/schema/src/com/cloud/user/dao/UserDaoImpl.java | 13 +++++++++++++
 setup/db/db/schema-440to450.sql                       |  6 ++++++
 3 files changed, 25 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a96d8ef/engine/schema/src/com/cloud/user/UserVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/UserVO.java b/engine/schema/src/com/cloud/user/UserVO.java
index 68879f6..8ab450d 100644
--- a/engine/schema/src/com/cloud/user/UserVO.java
+++ b/engine/schema/src/com/cloud/user/UserVO.java
@@ -97,6 +97,9 @@ public class UserVO implements User, Identity, InternalIdentity {
     @Column(name = "default")
     boolean isDefault;
 
+    @Column(name = "domain_id")
+    private long domainId;
+
     public UserVO() {
         this.uuid = UUID.randomUUID().toString();
     }
@@ -270,4 +273,7 @@ public class UserVO implements User, Identity, InternalIdentity {
         return isDefault;
     }
 
+    public void setDomainId(long domainId) {
+        this.domainId = domainId;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a96d8ef/engine/schema/src/com/cloud/user/dao/UserDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/dao/UserDaoImpl.java b/engine/schema/src/com/cloud/user/dao/UserDaoImpl.java
index 6ac398d..d39177e 100644
--- a/engine/schema/src/com/cloud/user/dao/UserDaoImpl.java
+++ b/engine/schema/src/com/cloud/user/dao/UserDaoImpl.java
@@ -19,9 +19,11 @@ package com.cloud.user.dao;
 import java.util.List;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 
 import org.springframework.stereotype.Component;
 
+import com.cloud.user.Account;
 import com.cloud.user.UserVO;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
@@ -40,6 +42,9 @@ public class UserDaoImpl extends GenericDaoBase<UserVO, Long> implements UserDao
     protected SearchBuilder<UserVO> SecretKeySearch;
     protected SearchBuilder<UserVO> RegistrationTokenSearch;
 
+    @Inject
+    AccountDao _accountDao;
+
     protected UserDaoImpl() {
         UsernameSearch = createSearchBuilder();
         UsernameSearch.and("username", UsernameSearch.entity().getUsername(), SearchCriteria.Op.EQ);
@@ -128,4 +133,12 @@ public class UserDaoImpl extends GenericDaoBase<UserVO, Long> implements UserDao
         return listBy(sc);
     }
 
+    @Override
+    @DB
+    public UserVO persist(UserVO user) {
+        Account account = _accountDao.findById(user.getAccountId());
+        user.setDomainId(account.getDomainId());
+        return super.persist(user);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a96d8ef/setup/db/db/schema-440to450.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-440to450.sql b/setup/db/db/schema-440to450.sql
index 1a019dd..5fd6200 100644
--- a/setup/db/db/schema-440to450.sql
+++ b/setup/db/db/schema-440to450.sql
@@ -234,3 +234,9 @@ CREATE VIEW `cloud`.`volume_view` AS
 
 /* As part of the separation of Xen and XenServer, update the column for the network labels */
 ALTER TABLE `cloud`.`physical_network_traffic_types` CHANGE `xen_network_label` `xenserver_network_label` varchar(255) COMMENT 'The network name label of the physical device dedicated to this traffic on a XenServer host';
+
+/*Adding domainId field to the user table in order to restrict duplicated users creation on the db level*/
+ALTER TABLE `cloud`.`user` ADD COLUMN domain_id bigint(20) unsigned DEFAULT NULL;
+ALTER TABLE `cloud`.`user` ADD CONSTRAINT `fk_user__domain_id` FOREIGN KEY `fk_user__domain_id`(`domain_id`) REFERENCES `domain`(`id`) ON DELETE CASCADE;
+UPDATE `cloud`.`user` SET `cloud`.`user`.domain_id=(SELECT `cloud`.`account`.domain_id   FROM `cloud`.`account`   WHERE `cloud`.`account`.id=`cloud`.`user`.account_id) where id > 0;
+ALTER TABLE `cloud`.`user` ADD UNIQUE KEY `username_domain_id` (`username`,`domain_id`);