Updated Branches:
refs/heads/master a9bf92e40 -> 214bbf3eb
CLOUDSTACK-279: fixed deleteProject when executed by the regular user. Always
pass System account as a caller when do account cleanup
Conflicts:
api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
server/src/com/cloud/network/element/CiscoNexusVSMElement.java
server/src/com/cloud/network/element/ElasticLoadBalancerElement.java
server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
server/src/com/cloud/network/element/NetscalerElement.java
server/src/com/cloud/network/element/OvsElement.java
server/src/com/cloud/network/element/VpcJuniperSRXExternalFirewallElement.java
server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
server/src/com/cloud/network/vpc/VpcManagerImpl.java
server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
server/src/com/cloud/storage/StorageManager.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/214bbf3e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/214bbf3e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/214bbf3e
Branch: refs/heads/master
Commit: 214bbf3ebd957f571901869f319da61ebad7ed23
Parents: a9bf92e
Author: Alena Prokharchyk <[email protected]>
Authored: Wed Oct 17 16:00:43 2012 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Wed Oct 17 17:26:19 2012 -0700
----------------------------------------------------------------------
.../api/commands/DeleteRemoteAccessVpnCmd.java | 5 ++-
.../com/cloud/api/commands/DeleteVolumeCmd.java | 2 +-
.../com/cloud/api/commands/DestroyRouterCmd.java | 6 +++-
.../com/cloud/api/commands/RemoveVpnUserCmd.java | 2 +-
.../network/VirtualNetworkApplianceService.java | 3 +-
.../com/cloud/network/element/NetworkElement.java | 3 +-
api/src/com/cloud/network/element/VpcProvider.java | 3 +-
.../cloud/network/vpn/RemoteAccessVpnService.java | 5 ++-
api/src/com/cloud/storage/StorageService.java | 4 ++-
.../element/ElasticLoadBalancerElement.java | 2 +-
.../cloud/network/element/NiciraNvpElement.java | 2 +-
.../src/com/cloud/network/element/OvsElement.java | 2 +-
.../src/com/cloud/network/NetworkManagerImpl.java | 4 +-
.../cloud/network/element/BareMetalElement.java | 2 +-
.../network/element/CloudZonesNetworkElement.java | 2 +-
.../cloud/network/element/ExternalDhcpElement.java | 2 +-
.../network/element/SecurityGroupElement.java | 2 +-
.../network/element/VirtualRouterElement.java | 8 +++---
.../network/element/VpcVirtualRouterElement.java | 6 ++--
.../router/VirtualNetworkApplianceManagerImpl.java | 15 ++++++----
server/src/com/cloud/network/vpc/VpcManager.java | 4 ++-
.../src/com/cloud/network/vpc/VpcManagerImpl.java | 20 +++++++-------
.../network/vpn/RemoteAccessVpnManagerImpl.java | 8 +----
.../src/com/cloud/projects/ProjectManagerImpl.java | 4 ++-
server/src/com/cloud/storage/StorageManager.java | 6 +++-
.../src/com/cloud/storage/StorageManagerImpl.java | 7 +----
server/src/com/cloud/user/AccountManagerImpl.java | 10 +++---
server/test/com/cloud/vpc/MockVpcManagerImpl.java | 2 +-
server/test/com/cloud/vpc/VpcApiUnitTest.java | 2 +-
.../cloud/vpc/dao/MockVpcVirtualRouterElement.java | 3 +-
30 files changed, 78 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
b/api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
index c924fd9..899142b 100644
--- a/api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
+++ b/api/src/com/cloud/api/commands/DeleteRemoteAccessVpnCmd.java
@@ -28,7 +28,8 @@ import com.cloud.event.EventTypes;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.RemoteAccessVpn;
-
+import com.cloud.user.UserContext;
+
@Implementation(description="Destroys a l2tp/ipsec remote access vpn",
responseObject=SuccessResponse.class)
public class DeleteRemoteAccessVpnCmd extends BaseAsyncCmd {
public static final Logger s_logger =
Logger.getLogger(DeleteRemoteAccessVpnCmd.class.getName());
@@ -83,7 +84,7 @@ public class DeleteRemoteAccessVpnCmd extends BaseAsyncCmd {
@Override
public void execute() throws ResourceUnavailableException {
- _ravService.destroyRemoteAccessVpn(publicIpId);
+ _ravService.destroyRemoteAccessVpn(publicIpId,
UserContext.current().getCaller());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/api/commands/DeleteVolumeCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/DeleteVolumeCmd.java
b/api/src/com/cloud/api/commands/DeleteVolumeCmd.java
index a998311..6364e0b 100644
--- a/api/src/com/cloud/api/commands/DeleteVolumeCmd.java
+++ b/api/src/com/cloud/api/commands/DeleteVolumeCmd.java
@@ -79,7 +79,7 @@ public class DeleteVolumeCmd extends BaseCmd {
@Override
public void execute() throws ConcurrentOperationException {
UserContext.current().setEventDetails("Volume Id: "+getId());
- boolean result = _storageService.deleteVolume(id);
+ boolean result = _storageService.deleteVolume(id,
UserContext.current().getCaller());
if (result) {
SuccessResponse response = new SuccessResponse(getCommandName());
this.setResponseObject(response);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/api/commands/DestroyRouterCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/DestroyRouterCmd.java
b/api/src/com/cloud/api/commands/DestroyRouterCmd.java
index 2026e87..f5286d6 100644
--- a/api/src/com/cloud/api/commands/DestroyRouterCmd.java
+++ b/api/src/com/cloud/api/commands/DestroyRouterCmd.java
@@ -96,8 +96,10 @@ public class DestroyRouterCmd extends BaseAsyncCmd {
@Override
public void execute() throws ConcurrentOperationException,
ResourceUnavailableException {
- UserContext.current().setEventDetails("Router Id: "+getId());
- VirtualRouter result = _routerService.destroyRouter(getId());
+ UserContext ctx = UserContext.current();
+ ctx.setEventDetails("Router Id: "+getId());
+
+ VirtualRouter result = _routerService.destroyRouter(getId(),
ctx.getCaller(), ctx.getCallerUserId());
if (result != null) {
DomainRouterResponse response =
_responseGenerator.createDomainRouterResponse(result);
response.setResponseName(getCommandName());
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/api/commands/RemoveVpnUserCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/RemoveVpnUserCmd.java
b/api/src/com/cloud/api/commands/RemoveVpnUserCmd.java
index 28fe367..151b351 100644
--- a/api/src/com/cloud/api/commands/RemoveVpnUserCmd.java
+++ b/api/src/com/cloud/api/commands/RemoveVpnUserCmd.java
@@ -108,7 +108,7 @@ public class RemoveVpnUserCmd extends BaseAsyncCmd {
@Override
public void execute(){
Account owner = _accountService.getAccount(getEntityOwnerId());
- boolean result = _ravService.removeVpnUser(owner.getId(), userName);
+ boolean result = _ravService.removeVpnUser(owner.getId(), userName,
UserContext.current().getCaller());
if (!result) {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to
remove vpn user");
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/network/VirtualNetworkApplianceService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/VirtualNetworkApplianceService.java
b/api/src/com/cloud/network/VirtualNetworkApplianceService.java
index d0fb527..300c993 100644
--- a/api/src/com/cloud/network/VirtualNetworkApplianceService.java
+++ b/api/src/com/cloud/network/VirtualNetworkApplianceService.java
@@ -21,6 +21,7 @@ import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.InsufficientCapacityException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.router.VirtualRouter;
+import com.cloud.user.Account;
public interface VirtualNetworkApplianceService {
/**
@@ -60,6 +61,6 @@ public interface VirtualNetworkApplianceService {
VirtualRouter startRouter(long id) throws ResourceUnavailableException,
InsufficientCapacityException, ConcurrentOperationException;
- VirtualRouter destroyRouter(long routerId) throws
ResourceUnavailableException, ConcurrentOperationException;
+ VirtualRouter destroyRouter(long routerId, Account caller, Long
callerUserId) throws ResourceUnavailableException, ConcurrentOperationException;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/network/element/NetworkElement.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/element/NetworkElement.java
b/api/src/com/cloud/network/element/NetworkElement.java
index ec8e7bc..10ea509 100644
--- a/api/src/com/cloud/network/element/NetworkElement.java
+++ b/api/src/com/cloud/network/element/NetworkElement.java
@@ -104,10 +104,11 @@ public interface NetworkElement extends Adapter {
/**
* The network is being destroyed.
* @param network
+ * @param context TODO
* @return
* @throws ConcurrentOperationException
*/
- boolean destroy(Network network) throws ConcurrentOperationException,
ResourceUnavailableException;
+ boolean destroy(Network network, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException;
/**
* Check if the instances of this Element are configured to be used on the
physical network referred by this provider.
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/network/element/VpcProvider.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/element/VpcProvider.java
b/api/src/com/cloud/network/element/VpcProvider.java
index e4593e9..aa5d224 100644
--- a/api/src/com/cloud/network/element/VpcProvider.java
+++ b/api/src/com/cloud/network/element/VpcProvider.java
@@ -41,11 +41,12 @@ public interface VpcProvider extends NetworkElement{
/**
* @param vpc
+ * @param context TODO
* @return
* @throws ConcurrentOperationException
* @throws ResourceUnavailableException
*/
- boolean shutdownVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException;
+ boolean shutdownVpc(Vpc vpc, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException;
boolean createPrivateGateway(PrivateGateway gateway) throws
ConcurrentOperationException, ResourceUnavailableException;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/network/vpn/RemoteAccessVpnService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpn/RemoteAccessVpnService.java
b/api/src/com/cloud/network/vpn/RemoteAccessVpnService.java
index 2f95637..4d820a7 100644
--- a/api/src/com/cloud/network/vpn/RemoteAccessVpnService.java
+++ b/api/src/com/cloud/network/vpn/RemoteAccessVpnService.java
@@ -24,17 +24,18 @@ import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.RemoteAccessVpn;
import com.cloud.network.VpnUser;
+import com.cloud.user.Account;
import com.cloud.utils.Pair;
public interface RemoteAccessVpnService {
RemoteAccessVpn createRemoteAccessVpn(long vpnServerAddressId, String
ipRange, boolean openFirewall, long networkId)
throws NetworkRuleConflictException;
- void destroyRemoteAccessVpn(long vpnServerAddressId) throws
ResourceUnavailableException;
+ void destroyRemoteAccessVpn(long vpnServerAddressId, Account caller)
throws ResourceUnavailableException;
RemoteAccessVpn startRemoteAccessVpn(long vpnServerAddressId, boolean
openFirewall) throws ResourceUnavailableException;
VpnUser addVpnUser(long vpnOwnerId, String userName, String password);
- boolean removeVpnUser(long vpnOwnerId, String userName);
+ boolean removeVpnUser(long vpnOwnerId, String userName, Account caller);
List<? extends VpnUser> listVpnUsers(long vpnOwnerId, String userName);
boolean applyVpnUsers(long vpnOwnerId, String userName);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/api/src/com/cloud/storage/StorageService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/StorageService.java
b/api/src/com/cloud/storage/StorageService.java
index 1649e15..587c138 100644
--- a/api/src/com/cloud/storage/StorageService.java
+++ b/api/src/com/cloud/storage/StorageService.java
@@ -32,6 +32,7 @@ import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceInUseException;
import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
import com.cloud.utils.Pair;
public interface StorageService{
@@ -72,7 +73,6 @@ public interface StorageService{
*/
Volume createVolume(CreateVolumeCmd cmd);
- boolean deleteVolume(long volumeId) throws ConcurrentOperationException;
/**
* Delete the storage pool
@@ -126,4 +126,6 @@ public interface StorageService{
*/
Volume uploadVolume(UploadVolumeCmd cmd) throws
ResourceAllocationException;
+ boolean deleteVolume(long volumeId, Account caller) throws
ConcurrentOperationException;
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
----------------------------------------------------------------------
diff --git
a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
index 8490534..34cbe08 100644
---
a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
+++
b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
@@ -125,7 +125,7 @@ public class ElasticLoadBalancerElement extends AdapterBase
implements LoadBalan
}
@Override
- public boolean destroy(Network network) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network network, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
// TODO kill all loadbalancer vms by calling the
ElasticLoadBalancerManager
return false;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
----------------------------------------------------------------------
diff --git
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
index b3e87fd..b1e9af2 100644
---
a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
+++
b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
@@ -475,7 +475,7 @@ public class NiciraNvpElement extends AdapterBase implements
}
@Override
- public boolean destroy(Network network)
+ public boolean destroy(Network network, ReservationContext context)
throws ConcurrentOperationException,
ResourceUnavailableException {
if (!canHandle(network, Service.Connectivity)) {
return false;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java
----------------------------------------------------------------------
diff --git
a/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java
b/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java
index bf785e6..b7a978e 100644
--- a/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java
+++ b/plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java
@@ -47,7 +47,7 @@ public class OvsElement extends AdapterBase implements
NetworkElement {
OvsTunnelManager _ovsTunnelMgr;
@Override
- public boolean destroy(Network network)
+ public boolean destroy(Network network, ReservationContext context)
throws ConcurrentOperationException, ResourceUnavailableException {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java
b/server/src/com/cloud/network/NetworkManagerImpl.java
index 2eff189..8c91495 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -3551,7 +3551,7 @@ public class NetworkManagerImpl implements
NetworkManager, NetworkService, Manag
s_logger.debug("Sending destroy to " + element);
}
- if (!element.destroy(network)) {
+ if (!element.destroy(network, context)) {
success = false;
s_logger.warn("Unable to complete destroy of the
network: failed to destroy network element " + element.getName());
}
@@ -4384,7 +4384,7 @@ public class NetworkManagerImpl implements
NetworkManager, NetworkService, Manag
// the code would be triggered
s_logger.debug("Cleaning up remote access vpns as a part of public IP
id=" + ipId + " release...");
try {
- _vpnMgr.destroyRemoteAccessVpn(ipId);
+ _vpnMgr.destroyRemoteAccessVpn(ipId, caller);
} catch (ResourceUnavailableException e) {
s_logger.warn("Unable to destroy remote access vpn for ip id=" +
ipId + " as a part of ip release", e);
success = false;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/BareMetalElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/BareMetalElement.java
b/server/src/com/cloud/network/element/BareMetalElement.java
index 842af83..6900e89 100644
--- a/server/src/com/cloud/network/element/BareMetalElement.java
+++ b/server/src/com/cloud/network/element/BareMetalElement.java
@@ -103,7 +103,7 @@ public class BareMetalElement extends AdapterBase
implements NetworkElement {
}
@Override
- public boolean destroy(Network network) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network network, ReservationContext context)
throws ConcurrentOperationException, ResourceUnavailableException {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
index ca88a72..bb9ae81 100644
--- a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
+++ b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
@@ -129,7 +129,7 @@ public class CloudZonesNetworkElement extends AdapterBase
implements NetworkElem
}
@Override
- public boolean destroy(Network config) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network config, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
return false; // assume that the agent will remove userdata etc
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/ExternalDhcpElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/ExternalDhcpElement.java
b/server/src/com/cloud/network/element/ExternalDhcpElement.java
index 896cd85..c5ad914 100755
--- a/server/src/com/cloud/network/element/ExternalDhcpElement.java
+++ b/server/src/com/cloud/network/element/ExternalDhcpElement.java
@@ -114,7 +114,7 @@ public class ExternalDhcpElement extends AdapterBase
implements NetworkElement,
}
@Override
- public boolean destroy(Network network) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network network, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/SecurityGroupElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/SecurityGroupElement.java
b/server/src/com/cloud/network/element/SecurityGroupElement.java
index 26b33c9..517aed9 100644
--- a/server/src/com/cloud/network/element/SecurityGroupElement.java
+++ b/server/src/com/cloud/network/element/SecurityGroupElement.java
@@ -86,7 +86,7 @@ public class SecurityGroupElement extends AdapterBase
implements NetworkElement
}
@Override
- public boolean destroy(Network network) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network network, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java
b/server/src/com/cloud/network/element/VirtualRouterElement.java
index f3941b6..07b1823 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -621,7 +621,7 @@ public class VirtualRouterElement extends AdapterBase
implements VirtualRouterEl
if (!result) {
s_logger.warn("Failed to stop virtual router element " +
router + ", but would try to process clean up anyway.");
}
- result = (_routerMgr.destroyRouter(router.getId()) != null);
+ result = (_routerMgr.destroyRouter(router.getId(),
context.getAccount(), context.getCaller().getId()) != null);
if (!result) {
s_logger.warn("Failed to clean up virtual router element "
+ router);
}
@@ -631,14 +631,14 @@ public class VirtualRouterElement extends AdapterBase
implements VirtualRouterEl
}
@Override
- public boolean destroy(Network config) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network config, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
List<DomainRouterVO> routers =
_routerDao.listByNetworkAndRole(config.getId(), Role.VIRTUAL_ROUTER);
if (routers == null || routers.isEmpty()) {
return true;
}
boolean result = true;
for (DomainRouterVO router : routers) {
- result = result && (_routerMgr.destroyRouter(router.getId()) !=
null);
+ result = result && (_routerMgr.destroyRouter(router.getId(),
context.getAccount(), context.getCaller().getId()) != null);
}
return result;
}
@@ -736,7 +736,7 @@ public class VirtualRouterElement extends AdapterBase
implements VirtualRouterEl
List<DomainRouterVO> routers = _routerDao.listByElementId(elementId);
boolean result = true;
for (DomainRouterVO router : routers) {
- result = result && (_routerMgr.destroyRouter(router.getId()) !=
null);
+ result = result && (_routerMgr.destroyRouter(router.getId(),
context.getAccount(), context.getCaller().getId()) != null);
}
_vrProviderDao.remove(elementId);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
index 77ae4d4..2a2d05a 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -121,14 +121,14 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
}
@Override
- public boolean shutdownVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException {
+ public boolean shutdownVpc(Vpc vpc, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
List<DomainRouterVO> routers = _routerDao.listByVpcId(vpc.getId());
if (routers == null || routers.isEmpty()) {
return true;
}
boolean result = true;
for (DomainRouterVO router : routers) {
- result = result && (_routerMgr.destroyRouter(router.getId()) !=
null);
+ result = result && (_routerMgr.destroyRouter(router.getId(),
context.getAccount(), context.getCaller().getId()) != null);
}
return result;
}
@@ -251,7 +251,7 @@ public class VpcVirtualRouterElement extends
VirtualRouterElement implements Vpc
}
@Override
- public boolean destroy(Network config) throws
ConcurrentOperationException, ResourceUnavailableException {
+ public boolean destroy(Network config, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
boolean success = true;
Long vpcId = config.getVpcId();
if (vpcId == null) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index dcb630e..928ce0e 100755
---
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -17,6 +17,7 @@
package com.cloud.network.router;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
@@ -66,6 +67,7 @@ import com.cloud.agent.api.routing.NetworkElementCommand;
import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
import com.cloud.agent.api.routing.SavePasswordCommand;
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
+import com.cloud.agent.api.routing.SetNetworkACLCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
@@ -74,6 +76,7 @@ import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.api.to.FirewallRuleTO;
import com.cloud.agent.api.to.IpAddressTO;
import com.cloud.agent.api.to.LoadBalancerTO;
+import com.cloud.agent.api.to.NetworkACLTO;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.api.to.PortForwardingRuleTO;
import com.cloud.agent.api.to.StaticNatRuleTO;
@@ -363,11 +366,11 @@ public class VirtualNetworkApplianceManagerImpl
implements VirtualNetworkApplian
return false;
}
}
+
+
@Override
- public VirtualRouter destroyRouter(final long routerId) throws
ResourceUnavailableException, ConcurrentOperationException {
- UserContext context = UserContext.current();
- User user = _accountMgr.getActiveUser(context.getCallerUserId());
+ public VirtualRouter destroyRouter(final long routerId, Account caller,
Long callerUserId) throws ResourceUnavailableException,
ConcurrentOperationException {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Attempting to destroy router " + routerId);
@@ -378,9 +381,9 @@ public class VirtualNetworkApplianceManagerImpl implements
VirtualNetworkApplian
return null;
}
- _accountMgr.checkAccess(context.getCaller(), null, true, router);
+ _accountMgr.checkAccess(caller, null, true, router);
- boolean result = _itMgr.expunge(router, user,
_accountMgr.getAccount(router.getAccountId()));
+ boolean result = _itMgr.expunge(router,
_accountMgr.getActiveUser(callerUserId),
_accountMgr.getAccount(router.getAccountId()));
if (result) {
return router;
@@ -1465,7 +1468,7 @@ public class VirtualNetworkApplianceManagerImpl
implements VirtualNetworkApplian
s_logger.debug("Failed to start the VR " + router + "
with hypervisor type " + hType + ", " +
"destroying it and recreating one more time");
// destroy the router
- destroyRouter(router.getId());
+ destroyRouter(router.getId(),
_accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM);
continue;
} else {
throw ex;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/vpc/VpcManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManager.java
b/server/src/com/cloud/network/vpc/VpcManager.java
index 14fdbe9..9d7aaa8 100644
--- a/server/src/com/cloud/network/vpc/VpcManager.java
+++ b/server/src/com/cloud/network/vpc/VpcManager.java
@@ -55,11 +55,13 @@ public interface VpcManager extends VpcService{
/**
* @param vpc
+ * @param caller TODO
+ * @param callerUserId TODO
* @return
* @throws ConcurrentOperationException
* @throws ResourceUnavailableException
*/
- boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException;
+ boolean destroyVpc(Vpc vpc, Account caller, Long callerUserId) throws
ConcurrentOperationException, ResourceUnavailableException;
/**
* @param vpcId
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 987bd45..dbaecbb 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -615,7 +615,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
@ActionEvent(eventType = EventTypes.EVENT_VPC_DELETE, eventDescription =
"deleting VPC")
public boolean deleteVpc(long vpcId) throws ConcurrentOperationException,
ResourceUnavailableException {
UserContext.current().setEventDetails(" Id: " + vpcId);
- Account caller = UserContext.current().getCaller();
+ UserContext ctx = UserContext.current();
// Verify vpc id
Vpc vpc = getVpc(vpcId);
@@ -624,15 +624,14 @@ public class VpcManagerImpl implements VpcManager,
Manager{
}
//verify permissions
- _accountMgr.checkAccess(caller, null, false, vpc);
-
- return destroyVpc(vpc);
+ _accountMgr.checkAccess(ctx.getCaller(), null, false, vpc);
+
+ return destroyVpc(vpc, ctx.getCaller(), ctx.getCallerUserId());
}
@Override
@DB
- public boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException {
- UserContext ctx = UserContext.current();
+ public boolean destroyVpc(Vpc vpc, Account caller, Long callerUserId)
throws ConcurrentOperationException, ResourceUnavailableException {
s_logger.debug("Destroying vpc " + vpc);
//don't allow to delete vpc if it's in use by existing networks
@@ -663,7 +662,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
}
//cleanup vpc resources
- if (!cleanupVpcResources(vpc.getId(), ctx.getCaller(),
ctx.getCallerUserId())) {
+ if (!cleanupVpcResources(vpc.getId(), caller, callerUserId)) {
s_logger.warn("Failed to cleanup resources for vpc " + vpc);
return false;
}
@@ -892,7 +891,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
//do cleanup
if (!result && destroyOnFailure) {
s_logger.debug("Destroying vpc " + vpc + " that failed to
start");
- if (destroyVpc(vpc)) {
+ if (destroyVpc(vpc, caller, callerUser.getId())) {
s_logger.warn("Successfully destroyed vpc " + vpc + " that
failed to start");
} else {
s_logger.warn("Failed to destroy vpc " + vpc + " that
failed to start");
@@ -930,7 +929,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
//shutdown provider
s_logger.debug("Shutting down vpc " + vpc);
- boolean success = getVpcElement().shutdownVpc(vpc);
+ ReservationContext context = new ReservationContextImpl(null, null,
_accountMgr.getActiveUser(ctx.getCallerUserId()), caller);
+ boolean success = getVpcElement().shutdownVpc(vpc, context);
//TODO - shutdown all vpc resources here (ACLs, gateways, etc)
if (success) {
@@ -1737,7 +1737,7 @@ public class VpcManagerImpl implements VpcManager,
Manager{
s_logger.info("Found " + inactiveVpcs.size() + " removed
VPCs to cleanup");
for (VpcVO vpc : inactiveVpcs) {
s_logger.debug("Cleaning up " + vpc);
- destroyVpc(vpc);
+ destroyVpc(vpc,
_accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM);
}
} catch (Exception e) {
s_logger.error("Exception ", e);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
index 0556e8e..a134591 100755
--- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
@@ -212,9 +212,7 @@ public class RemoteAccessVpnManagerImpl implements
RemoteAccessVpnService, Manag
}
@Override @DB
- public void destroyRemoteAccessVpn(long ipId) throws
ResourceUnavailableException {
- Account caller = UserContext.current().getCaller();
-
+ public void destroyRemoteAccessVpn(long ipId, Account caller) throws
ResourceUnavailableException {
RemoteAccessVpnVO vpn = _remoteAccessVpnDao.findById(ipId);
if (vpn == null) {
s_logger.debug("vpn id=" + ipId + " does not exists ");
@@ -337,9 +335,7 @@ public class RemoteAccessVpnManagerImpl implements
RemoteAccessVpnService, Manag
}
@DB @Override
- public boolean removeVpnUser(long vpnOwnerId, String username) {
- Account caller = UserContext.current().getCaller();
-
+ public boolean removeVpnUser(long vpnOwnerId, String username, Account
caller) {
VpnUserVO user = _vpnUsersDao.findByAccountAndUsername(vpnOwnerId,
username);
if (user == null) {
throw new InvalidParameterValueException("Could not find vpn user
" + username);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/projects/ProjectManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java
b/server/src/com/cloud/projects/ProjectManagerImpl.java
index 8cbd313..4fa520c 100755
--- a/server/src/com/cloud/projects/ProjectManagerImpl.java
+++ b/server/src/com/cloud/projects/ProjectManagerImpl.java
@@ -68,6 +68,7 @@ import com.cloud.user.AccountManager;
import com.cloud.user.AccountVO;
import com.cloud.user.DomainManager;
import com.cloud.user.ResourceLimitService;
+import com.cloud.user.User;
import com.cloud.user.UserContext;
import com.cloud.user.dao.AccountDao;
import com.cloud.utils.DateUtil;
@@ -284,7 +285,8 @@ public class ProjectManagerImpl implements ProjectManager,
Manager{
txn.commit();
if (updateResult) {
- if (!cleanupProject(project, _accountDao.findById(caller.getId()),
callerUserId)) {
+ //pass system caller when clenaup projects account
+ if (!cleanupProject(project,
_accountDao.findById(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM)) {
s_logger.warn("Failed to cleanup project's id=" +
project.getId() + " resources, not removing the project yet");
return false;
} else {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/storage/StorageManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StorageManager.java
b/server/src/com/cloud/storage/StorageManager.java
index d535af4..ce00cbf 100755
--- a/server/src/com/cloud/storage/StorageManager.java
+++ b/server/src/com/cloud/storage/StorageManager.java
@@ -236,5 +236,7 @@ public interface StorageManager extends StorageService,
Manager {
HypervisorType getHypervisorTypeFromFormat(ImageFormat format);
- boolean storagePoolHasEnoughSpace(List<Volume> volume, StoragePool
pool);
-}
+ boolean storagePoolHasEnoughSpace(List<Volume> volume, StoragePool pool);
+
+ boolean deleteVolume(long volumeId, Account caller) throws
ConcurrentOperationException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/src/com/cloud/storage/StorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java
b/server/src/com/cloud/storage/StorageManagerImpl.java
index 7ec50f9..f5d0796 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -2864,15 +2864,10 @@ public class StorageManagerImpl implements
StorageManager, Manager, ClusterManag
}
}
- private boolean isAdmin(short accountType) {
- return ((accountType == Account.ACCOUNT_TYPE_ADMIN) || (accountType ==
Account.ACCOUNT_TYPE_DOMAIN_ADMIN) || (accountType ==
Account.ACCOUNT_TYPE_READ_ONLY_ADMIN));
- }
-
@Override
@DB
@ActionEvent(eventType = EventTypes.EVENT_VOLUME_DELETE, eventDescription
= "deleting volume")
- public boolean deleteVolume(long volumeId) throws
ConcurrentOperationException {
- Account caller = UserContext.current().getCaller();
+ public boolean deleteVolume(long volumeId, Account caller) throws
ConcurrentOperationException {
// Check that the volume ID is valid
VolumeVO volume = _volsDao.findById(volumeId);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/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 62d21be..f1e606e 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -572,7 +572,7 @@ public class AccountManagerImpl implements AccountManager,
AccountService, Manag
for (VolumeVO volume : volumes) {
if (!volume.getState().equals(Volume.State.Destroy)) {
try {
- _storageMgr.deleteVolume(volume.getId());
+ _storageMgr.deleteVolume(volume.getId(), caller);
} catch (Exception ex) {
s_logger.warn("Failed to cleanup volumes as a part of
account id=" + accountId + " cleanup due to Exception: ", ex);
accountCleanupNeeded = true;
@@ -585,12 +585,12 @@ public class AccountManagerImpl implements
AccountManager, AccountService, Manag
List<VpnUserVO> vpnUsers = _vpnUser.listByAccount(accountId);
for (VpnUserVO vpnUser : vpnUsers) {
- _remoteAccessVpnMgr.removeVpnUser(accountId,
vpnUser.getUsername());
+ _remoteAccessVpnMgr.removeVpnUser(accountId,
vpnUser.getUsername(), caller);
}
try {
for (RemoteAccessVpnVO vpn : remoteAccessVpns) {
-
_remoteAccessVpnMgr.destroyRemoteAccessVpn(vpn.getServerAddressId());
+
_remoteAccessVpnMgr.destroyRemoteAccessVpn(vpn.getServerAddressId(), caller);
}
} catch (ResourceUnavailableException ex) {
s_logger.warn("Failed to cleanup remote access vpn resources
as a part of account id=" + accountId + " cleanup due to Exception: ", ex);
@@ -608,7 +608,7 @@ public class AccountManagerImpl implements AccountManager,
AccountService, Manag
if (networks != null) {
for (NetworkVO network : networks) {
- ReservationContext context = new
ReservationContextImpl(null, null, getActiveUser(callerUserId), account);
+ ReservationContext context = new
ReservationContextImpl(null, null, getActiveUser(callerUserId), caller);
if (!_networkMgr.destroyNetwork(network.getId(), context))
{
s_logger.warn("Unable to destroy network " + network +
" as a part of account id=" + accountId + " cleanup.");
@@ -626,7 +626,7 @@ public class AccountManagerImpl implements AccountManager,
AccountService, Manag
List<? extends Vpc> vpcs =
_vpcMgr.getVpcsForAccount(account.getId());
for (Vpc vpc : vpcs) {
- if (!_vpcMgr.destroyVpc(vpc)) {
+ if (!_vpcMgr.destroyVpc(vpc, caller, callerUserId)) {
s_logger.warn("Unable to destroy VPC " + vpc + " as a part
of account id=" + accountId + " cleanup.");
accountCleanupNeeded = true;
vpcsDeleted = false;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/test/com/cloud/vpc/MockVpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockVpcManagerImpl.java
b/server/test/com/cloud/vpc/MockVpcManagerImpl.java
index 2269339..1f41395 100644
--- a/server/test/com/cloud/vpc/MockVpcManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockVpcManagerImpl.java
@@ -344,7 +344,7 @@ public class MockVpcManagerImpl implements VpcManager,
Manager{
* @see
com.cloud.network.vpc.VpcManager#destroyVpc(com.cloud.network.vpc.Vpc)
*/
@Override
- public boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException {
+ public boolean destroyVpc(Vpc vpc, Account caller, Long callerUserId)
throws ConcurrentOperationException, ResourceUnavailableException {
// TODO Auto-generated method stub
return false;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/test/com/cloud/vpc/VpcApiUnitTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/VpcApiUnitTest.java
b/server/test/com/cloud/vpc/VpcApiUnitTest.java
index ad323d2..5cc325f 100644
--- a/server/test/com/cloud/vpc/VpcApiUnitTest.java
+++ b/server/test/com/cloud/vpc/VpcApiUnitTest.java
@@ -193,7 +193,7 @@ public class VpcApiUnitTest extends TestCase{
protected void destroyVpc() {
try {
- _vpcService.destroyVpc(_vpcService.getVpc(1));
+ _vpcService.destroyVpc(_vpcService.getVpc(1), new AccountVO(), 1L);
} catch (Exception ex) {
s_logger.error("Destroy VPC TEST FAILED due to exc ", ex);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/214bbf3e/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java
b/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java
index 5d759b8..8b9d362 100644
--- a/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java
+++ b/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java
@@ -20,10 +20,11 @@ import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.element.VpcVirtualRouterElement;
import com.cloud.network.vpc.Vpc;
+import com.cloud.vm.ReservationContext;
public class MockVpcVirtualRouterElement extends VpcVirtualRouterElement{
@Override
- public boolean shutdownVpc(Vpc vpc) throws ConcurrentOperationException,
ResourceUnavailableException {
+ public boolean shutdownVpc(Vpc vpc, ReservationContext context) throws
ConcurrentOperationException, ResourceUnavailableException {
return true;
}