From 8d27ecf4de14a3f2b999d053cf94da8000492a1e Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Mon, 19 Dec 2011 12:23:07 -0800 Subject: [PATCH] bug 12635: enable project account when activate the project status 12635: resolved fixed --- .../src/com/cloud/projects/ProjectManagerImpl.java | 13 +++++++++++-- server/src/com/cloud/user/AccountManager.java | 2 ++ server/src/com/cloud/user/AccountManagerImpl.java | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java b/server/src/com/cloud/projects/ProjectManagerImpl.java index e62a00be9ba..7eb5a268b11 100755 --- a/server/src/com/cloud/projects/ProjectManagerImpl.java +++ b/server/src/com/cloud/projects/ProjectManagerImpl.java @@ -916,6 +916,7 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ @Override @ActionEvent(eventType = EventTypes.EVENT_PROJECT_ACTIVATE, eventDescription = "activating project") + @DB public Project activateProject(long projectId) { Account caller = UserContext.current().getCaller(); @@ -941,9 +942,16 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ throw new InvalidParameterValueException("Can't activate the project in " + currentState + " state"); } + Transaction txn = Transaction.currentTxn(); + txn.start(); + project.setState(Project.State.Active); _projectDao.update(projectId, project); + _accountMgr.enableAccount(project.getProjectAccountId()); + + txn.commit(); + return _projectDao.findById(projectId); } @@ -970,7 +978,8 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ } - private boolean suspendProject(ProjectVO project) throws ConcurrentOperationException, ResourceUnavailableException{ + private boolean suspendProject(ProjectVO project) throws ConcurrentOperationException, ResourceUnavailableException { + s_logger.debug("Marking project " + project + " with state " + State.Suspended + " as a part of project suspend..."); project.setState(State.Suspended); boolean updateResult = _projectDao.update(project.getId(), project); @@ -979,7 +988,7 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ long projectAccountId = project.getProjectAccountId(); if (!_accountMgr.disableAccount(projectAccountId)) { s_logger.warn("Failed to suspend all project's " + project + " resources; the resources will be suspended later by background thread"); - } + } } else { throw new CloudRuntimeException("Failed to mark the project " + project + " with state " + State.Suspended); } diff --git a/server/src/com/cloud/user/AccountManager.java b/server/src/com/cloud/user/AccountManager.java index 978c938aaf1..589c33e7f86 100755 --- a/server/src/com/cloud/user/AccountManager.java +++ b/server/src/com/cloud/user/AccountManager.java @@ -88,5 +88,7 @@ public interface AccountManager extends AccountService { Pair findUserByApiKey(String apiKey); boolean lockAccount(long accountId); + + boolean enableAccount(long accountId); } diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index a834f932a74..0baa2cdd70a 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -379,6 +379,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag return _userDao.update(Long.valueOf(userId), userForUpdate); } + @Override public boolean enableAccount(long accountId) { boolean success = false; AccountVO acctForUpdate = _accountDao.createForUpdate();