bug 8424: fixed NPE in vmExpunge thread - set accountId for UserContext to the vm's ownerId (this value is being read by UsageEvents generator)

status 8424: resolved fixed
This commit is contained in:
alena 2011-02-07 12:04:22 -08:00
parent 87b3f4a17d
commit 807562da50
2 changed files with 11 additions and 1 deletions

View File

@ -358,6 +358,8 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
throw new InvalidParameterValueException("Unable to find " + ruleId);
}
long ownerId = rule.getAccountId();
_accountMgr.checkAccess(caller, rule);
revokeRule(rule, caller, ctx.getCallerUserId());
@ -369,7 +371,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
success = true;
}
if(success){
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_RULE_DELETE, rule.getAccountId(), 0, rule.getId(), null);
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_NET_RULE_DELETE, ownerId, 0, ruleId, null);
_usageEventDao.persist(usageEvent);
}
return success;
@ -383,6 +385,11 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
}
List<PortForwardingRuleVO> rules = _forwardingDao.listByVm(vmId);
if (rules == null || rules.isEmpty()) {
return true;
}
for (PortForwardingRuleVO rule : rules) {
revokePortForwardingRule(rule.getId(), true);
}

View File

@ -1111,6 +1111,9 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
@Override
public boolean expunge(UserVmVO vm, long callerUserId, Account caller) {
UserContext ctx = UserContext.current();
ctx.setAccountId(vm.getAccountId());
try {
if (!_itMgr.advanceExpunge(vm, _accountMgr.getSystemUser(), caller)) {