Updated Branches: refs/heads/master 5c3013a69 -> 7f2c65963
CLOUDSTACK-1673: AWS Regions - Events - User disable / Domain Delete event does not include the UUID of the user/domain that was disabled. - added enity type and enity UUID details to UserContext - publish the entity type and UUID details for the action events generated for accout/user/domain Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7f2c6596 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7f2c6596 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7f2c6596 Branch: refs/heads/master Commit: 7f2c659630821b41c84637b5f9cabbb8995db8df Parents: 5c3013a Author: Murali Reddy <muralimmre...@gmail.com> Authored: Thu Jul 11 17:48:07 2013 +0530 Committer: Murali Reddy <muralimmre...@gmail.com> Committed: Thu Jul 11 18:01:43 2013 +0530 ---------------------------------------------------------------------- api/src/com/cloud/user/UserContext.java | 23 +++++++++++++++++ .../src/com/cloud/event/ActionEventUtils.java | 12 +++++++++ .../src/com/cloud/user/AccountManagerImpl.java | 26 +++++++++++++++++++- .../src/com/cloud/user/DomainManagerImpl.java | 4 ++- 4 files changed, 63 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f2c6596/api/src/com/cloud/user/UserContext.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/user/UserContext.java b/api/src/com/cloud/user/UserContext.java index bcb33b5..fdd19d4 100644 --- a/api/src/com/cloud/user/UserContext.java +++ b/api/src/com/cloud/user/UserContext.java @@ -29,6 +29,8 @@ public class UserContext { private long accountId; private String eventDetails; private boolean apiServer; + private Class entityType; + private String entityUUID; @Inject private AccountService _accountMgr = null; @@ -137,4 +139,25 @@ public class UserContext { public String getEventDetails() { return eventDetails; } + + public void setEntityDetails(Class entityType, String uuid) { + this.entityType = entityType; + this.entityUUID = uuid; + } + + public String getEntityType() { + return (entityType != null) ? entityType.getName() : null; + } + + public void setEntityType(Class entityType) { + this.entityType = entityType; + } + + public String getEntityUUID() { + return entityUUID; + } + + public void setEntityUUID(String entityUUID) { + this.entityUUID = entityUUID; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f2c6596/server/src/com/cloud/event/ActionEventUtils.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/event/ActionEventUtils.java b/server/src/com/cloud/event/ActionEventUtils.java index eb3efed..906689f 100755 --- a/server/src/com/cloud/event/ActionEventUtils.java +++ b/server/src/com/cloud/event/ActionEventUtils.java @@ -24,6 +24,7 @@ import com.cloud.user.AccountVO; import com.cloud.user.User; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; +import com.cloud.user.UserContext; import com.cloud.utils.component.ComponentContext; import org.apache.cloudstack.framework.events.EventBus; import org.apache.cloudstack.framework.events.EventBusException; @@ -152,6 +153,15 @@ public class ActionEventUtils { return; // no provider is configured to provide events bus, so just return } + // get the entity details for which ActionEvent is generated + String entityType = null; + String entityUuid = null; + UserContext context = UserContext.current(); + if (context != null) { + entityType = context.getEntityType(); + entityUuid = context.getEntityUUID(); + } + org.apache.cloudstack.framework.events.Event event = new org.apache.cloudstack.framework.events.Event( ManagementServer.Name, eventCategory, @@ -170,6 +180,8 @@ public class ActionEventUtils { eventDescription.put("account", account.getUuid()); eventDescription.put("event", eventType); eventDescription.put("status", state.toString()); + eventDescription.put("entity", entityType); + eventDescription.put("entityuuid", entityUuid); event.setDescription(eventDescription); try { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f2c6596/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 6b4bf0e..283e832 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -910,6 +910,8 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } txn.commit(); + UserContext.current().setEntityDetails(Account.class, account.getUuid()); + //check success return _userAccountDao.findById(user.getId()); } @@ -1070,6 +1072,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M s_logger.error("error updating user", th); throw new CloudRuntimeException("Unable to update user " + id); } + + UserContext.current().setEntityDetails(User.class, user.getUuid()); + return _userAccountDao.findById(id); } @@ -1100,6 +1105,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M boolean success = doSetUserStatus(userId, State.disabled); if (success) { + + UserContext.current().setEntityDetails(User.class, user.getUuid()); + // user successfully disabled return _userAccountDao.findById(userId); } else { @@ -1146,6 +1154,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M if (success) { // whenever the user is successfully enabled, reset the login attempts to zero updateLoginAttempts(userId, 0, false); + + UserContext.current().setEntityDetails(User.class, user.getUuid()); + return _userAccountDao.findById(userId); } else { throw new CloudRuntimeException("Unable to enable user " + userId); @@ -1207,6 +1218,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } if (success) { + + UserContext.current().setEntityDetails(User.class, user.getUuid()); + return _userAccountDao.findById(userId); } else { throw new CloudRuntimeException("Unable to lock user " + userId); @@ -1252,6 +1266,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M throw new InvalidParameterValueException("The account id=" + accountId + " manages project(s) with ids " + projectIds + "and can't be removed"); } + + UserContext.current().setEntityDetails(Account.class, account.getUuid()); + return deleteAccount(account, callerUserId, caller); } @@ -1281,6 +1298,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M boolean success = enableAccount(account.getId()); if (success) { + + UserContext.current().setEntityDetails(Account.class, account.getUuid()); + return _accountDao.findById(account.getId()); } else { throw new CloudRuntimeException("Unable to enable account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId); @@ -1310,6 +1330,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M checkAccess(caller, null, true, account); if (lockAccount(account.getId())) { + UserContext.current().setEntityDetails(Account.class, account.getUuid()); return _accountDao.findById(account.getId()); } else { throw new CloudRuntimeException("Unable to lock account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId); @@ -1339,6 +1360,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M checkAccess(caller, null, true, account); if (disableAccount(account.getId())) { + UserContext.current().setEntityDetails(Account.class, account.getUuid()); return _accountDao.findById(account.getId()); } else { throw new CloudRuntimeException("Unable to update account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId); @@ -1421,6 +1443,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M txn.commit(); if (success) { + UserContext.current().setEntityDetails(Account.class, account.getUuid()); return _accountDao.findById(account.getId()); } else { throw new CloudRuntimeException("Unable to update account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId); @@ -1451,6 +1474,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } checkAccess(UserContext.current().getCaller(), null, true, account); + UserContext.current().setEntityDetails(User.class, user.getUuid()); return _userDao.remove(id); } @@ -1769,7 +1793,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M userUUID = UUID.randomUUID().toString(); } UserVO user = _userDao.persist(new UserVO(accountId, userName, encodedPassword, firstName, lastName, email, timezone, userUUID)); - + UserContext.current().setEntityDetails(User.class, user.getUuid()); return user; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7f2c6596/server/src/com/cloud/user/DomainManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/DomainManagerImpl.java b/server/src/com/cloud/user/DomainManagerImpl.java index 562a0d8..aad5787 100644 --- a/server/src/com/cloud/user/DomainManagerImpl.java +++ b/server/src/com/cloud/user/DomainManagerImpl.java @@ -184,6 +184,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom DomainVO domain = _domainDao.create(new DomainVO(name, ownerId, parentId, networkDomain, domainUUID)); _resourceCountDao.createResourceCounts(domain.getId(), ResourceLimit.ResourceOwnerType.Domain); txn.commit(); + UserContext.current().setEntityDetails(Domain.class, domain.getUuid()); return domain; } @@ -280,6 +281,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom } cleanupDomainOfferings(domain.getId()); + UserContext.current().setEntityDetails(Domain.class, domain.getUuid()); return true; } catch (Exception ex) { s_logger.error("Exception deleting domain with id " + domain.getId(), ex); @@ -604,7 +606,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom } } _domainDao.update(domainId, domain); - + UserContext.current().setEntityDetails(Domain.class, domain.getUuid()); txn.commit(); return _domainDao.findById(domainId);