Bug 12972: Added VPN_USER_REMOVE usage events when VPN is disabled. VPN_USER_ADD events added when VPN is enabled again. VPN usage will be generated only when VPN is enabled.

Status 12972: resolved fixed
Reviewed-By: Nitin
This commit is contained in:
kishan 2012-02-08 19:57:08 +05:30
parent 278833eb29
commit 17659d1500
1 changed files with 22 additions and 1 deletions

View File

@ -275,6 +275,15 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
try {
txn.start();
_remoteAccessVpnDao.remove(ipId);
// Stop billing of VPN users when VPN is removed. VPN_User_ADD events will be generated when VPN is created again
List<VpnUserVO> vpnUsers = _vpnUsersDao.listByAccount(vpn.getAccountId());
for(VpnUserVO user : vpnUsers){
// VPN_USER_REMOVE event is already generated for users in Revoke state
if(user.getState() != VpnUser.State.Revoke){
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_REMOVE, user.getAccountId(), 0, user.getId(), user.getUsername());
_usageEventDao.persist(usageEvent);
}
}
if (vpnFwRules != null) {
for (FirewallRule vpnFwRule : vpnFwRules) {
_rulesDao.remove(vpnFwRule.getId());
@ -356,7 +365,7 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
return _vpnUsersDao.listByAccount(vpnOwnerId);
}
@Override
@Override @DB
public RemoteAccessVpnVO startRemoteAccessVpn(long vpnId, boolean openFirewall) throws ResourceUnavailableException {
Account caller = UserContext.current().getCaller();
@ -391,8 +400,20 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
return vpn;
} finally {
if (started) {
Transaction txn = Transaction.currentTxn();
txn.start();
vpn.setState(RemoteAccessVpn.State.Running);
_remoteAccessVpnDao.update(vpn.getServerAddressId(), vpn);
// Start billing of existing VPN users in ADD and Active state
List<VpnUserVO> vpnUsers = _vpnUsersDao.listByAccount(vpn.getAccountId());
for(VpnUserVO user : vpnUsers){
if(user.getState() != VpnUser.State.Revoke){
UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_ADD, user.getAccountId(), 0, user.getId(), user.getUsername());
_usageEventDao.persist(usageEvent);
}
}
txn.commit();
}
}
}