From 11e1e585b16562f02f7671d928cb34aafebeab98 Mon Sep 17 00:00:00 2001 From: ahuang Date: Tue, 16 Jul 2013 02:41:08 -0700 Subject: [PATCH] UserContext switched to CallContext. Added generic storage mechanism for other code to carry information throughout a call. Made the calling User and Account a must have. Added an interface to carry entities in error. Fixed up the code. Part of the vmsync branch --- api/src/com/cloud/user/UserContext.java | 163 ------------ .../cloud/user/UserContextInitializer.java | 40 --- .../apache/cloudstack/api/BaseAsyncCmd.java | 10 +- .../BaseListTemplateOrIsoPermissionsCmd.java | 5 +- .../admin/account/CreateAccountCmd.java | 6 +- .../admin/account/DeleteAccountCmd.java | 7 +- .../admin/account/DisableAccountCmd.java | 5 +- .../command/admin/domain/CreateDomainCmd.java | 5 +- .../command/admin/domain/DeleteDomainCmd.java | 5 +- .../command/admin/domain/UpdateDomainCmd.java | 5 +- .../admin/host/CancelMaintenanceCmd.java | 5 +- .../admin/host/PrepareForMaintenanceCmd.java | 5 +- .../command/admin/host/ReconnectHostCmd.java | 5 +- .../admin/host/ReleaseHostReservationCmd.java | 5 +- ...nfigureInternalLoadBalancerElementCmd.java | 7 +- .../CreateInternalLoadBalancerElementCmd.java | 5 +- .../internallb/StartInternalLBVMCmd.java | 7 +- .../admin/internallb/StopInternalLBVMCmd.java | 7 +- .../network/AddNetworkServiceProviderCmd.java | 5 +- .../network/CreatePhysicalNetworkCmd.java | 5 +- .../network/DeletePhysicalNetworkCmd.java | 5 +- .../ReleaseDedicatedGuestVlanRangeCmd.java | 6 +- .../ConfigureVirtualRouterElementCmd.java | 5 +- .../router/CreateVirtualRouterElementCmd.java | 5 +- .../admin/router/DestroyRouterCmd.java | 7 +- .../command/admin/router/RebootRouterCmd.java | 5 +- .../command/admin/router/StartRouterCmd.java | 5 +- .../command/admin/router/StopRouterCmd.java | 5 +- .../CancelPrimaryStorageMaintenanceCmd.java | 5 +- ...reparePrimaryStorageForMaintenanceCmd.java | 5 +- .../admin/systemvm/DestroySystemVmCmd.java | 7 +- .../admin/systemvm/MigrateSystemVMCmd.java | 7 +- .../admin/systemvm/RebootSystemVmCmd.java | 7 +- .../admin/systemvm/ScaleSystemVMCmd.java | 8 +- .../admin/systemvm/StartSystemVMCmd.java | 7 +- .../admin/systemvm/StopSystemVmCmd.java | 7 +- .../admin/systemvm/UpgradeSystemVMCmd.java | 7 +- .../admin/usage/AddTrafficTypeCmd.java | 5 +- .../api/command/admin/user/CreateUserCmd.java | 7 +- .../api/command/admin/user/DeleteUserCmd.java | 5 +- .../command/admin/user/DisableUserCmd.java | 5 +- .../api/command/admin/user/EnableUserCmd.java | 5 +- .../api/command/admin/user/UpdateUserCmd.java | 5 +- .../api/command/admin/vm/MigrateVMCmd.java | 7 +- .../MigrateVirtualMachineWithVolumeCmd.java | 5 +- .../admin/vpc/DeletePrivateGatewayCmd.java | 5 +- .../api/command/admin/zone/CreateZoneCmd.java | 5 +- .../api/command/admin/zone/DeleteZoneCmd.java | 5 +- .../api/command/admin/zone/UpdateZoneCmd.java | 5 +- .../user/account/AddAccountToProjectCmd.java | 5 +- .../account/DeleteAccountFromProjectCmd.java | 5 +- .../user/address/AssociateIPAddrCmd.java | 11 +- .../user/address/DisassociateIPAddrCmd.java | 5 +- .../affinitygroup/CreateAffinityGroupCmd.java | 5 +- .../affinitygroup/DeleteAffinityGroupCmd.java | 5 +- .../UpdateVMAffinityGroupCmd.java | 5 +- .../CreateAutoScaleVmProfileCmd.java | 7 +- .../user/autoscale/CreateConditionCmd.java | 9 +- .../autoscale/DeleteAutoScalePolicyCmd.java | 5 +- .../autoscale/DeleteAutoScaleVmGroupCmd.java | 5 +- .../DeleteAutoScaleVmProfileCmd.java | 5 +- .../autoscale/UpdateAutoScalePolicyCmd.java | 5 +- .../autoscale/UpdateAutoScaleVmGroupCmd.java | 5 +- .../UpdateAutoScaleVmProfileCmd.java | 5 +- .../command/user/event/ArchiveEventsCmd.java | 5 +- .../command/user/event/DeleteEventsCmd.java | 5 +- .../firewall/CreateEgressFirewallRuleCmd.java | 11 +- .../user/firewall/CreateFirewallRuleCmd.java | 11 +- .../firewall/CreatePortForwardingRuleCmd.java | 13 +- .../firewall/DeleteEgressFirewallRuleCmd.java | 5 +- .../user/firewall/DeleteFirewallRuleCmd.java | 5 +- .../firewall/DeletePortForwardingRuleCmd.java | 5 +- .../api/command/user/iso/AttachIsoCmd.java | 5 +- .../api/command/user/iso/DeleteIsoCmd.java | 5 +- .../api/command/user/iso/ExtractIsoCmd.java | 5 +- .../api/command/user/iso/ListIsosCmd.java | 5 +- .../api/command/user/iso/RegisterIsoCmd.java | 5 +- .../AssignToLoadBalancerRuleCmd.java | 5 +- .../CreateApplicationLoadBalancerCmd.java | 5 +- .../CreateLBHealthCheckPolicyCmd.java | 10 +- .../CreateLBStickinessPolicyCmd.java | 7 +- .../CreateLoadBalancerRuleCmd.java | 11 +- .../DeleteApplicationLoadBalancerCmd.java | 5 +- .../DeleteLBHealthCheckPolicyCmd.java | 8 +- .../DeleteLBStickinessPolicyCmd.java | 7 +- .../DeleteLoadBalancerRuleCmd.java | 5 +- .../ListLBHealthCheckPoliciesCmd.java | 3 +- .../ListLBStickinessPoliciesCmd.java | 5 +- .../RemoveFromLoadBalancerRuleCmd.java | 5 +- .../UpdateLoadBalancerRuleCmd.java | 5 +- .../user/nat/CreateIpForwardingRuleCmd.java | 11 +- .../user/nat/DeleteIpForwardingRuleCmd.java | 5 +- .../user/network/CreateNetworkACLCmd.java | 8 +- .../user/network/CreateNetworkACLListCmd.java | 4 +- .../user/network/CreateNetworkCmd.java | 5 +- .../user/network/DeleteNetworkACLCmd.java | 8 +- .../user/network/DeleteNetworkACLListCmd.java | 8 +- .../user/network/DeleteNetworkCmd.java | 5 +- .../network/ReplaceNetworkACLListCmd.java | 8 +- .../user/network/UpdateNetworkACLItemCmd.java | 8 +- .../user/network/UpdateNetworkCmd.java | 5 +- .../user/project/ActivateProjectCmd.java | 5 +- .../user/project/CreateProjectCmd.java | 11 +- .../user/project/DeleteProjectCmd.java | 5 +- .../project/DeleteProjectInvitationCmd.java | 5 +- .../user/project/SuspendProjectCmd.java | 5 +- .../user/project/UpdateProjectCmd.java | 5 +- .../project/UpdateProjectInvitationCmd.java | 5 +- .../AssignToGlobalLoadBalancerRuleCmd.java | 7 +- .../gslb/CreateGlobalLoadBalancerRuleCmd.java | 10 +- .../gslb/DeleteGlobalLoadBalancerRuleCmd.java | 6 +- .../RemoveFromGlobalLoadBalancerRuleCmd.java | 7 +- .../gslb/UpdateGlobalLoadBalancerRuleCmd.java | 2 +- .../user/resource/UpdateResourceCountCmd.java | 5 +- .../user/resource/UpdateResourceLimitCmd.java | 5 +- .../AuthorizeSecurityGroupEgressCmd.java | 5 +- .../AuthorizeSecurityGroupIngressCmd.java | 5 +- .../securitygroup/CreateSecurityGroupCmd.java | 5 +- .../securitygroup/DeleteSecurityGroupCmd.java | 5 +- .../user/snapshot/CreateSnapshotCmd.java | 5 +- .../user/snapshot/DeleteSnapshotCmd.java | 5 +- .../command/user/ssh/CreateSSHKeyPairCmd.java | 5 +- .../command/user/ssh/DeleteSSHKeyPairCmd.java | 5 +- .../user/ssh/RegisterSSHKeyPairCmd.java | 5 +- .../user/template/CopyTemplateCmd.java | 5 +- .../user/template/CreateTemplateCmd.java | 6 +- .../user/template/DeleteTemplateCmd.java | 4 +- .../user/template/ExtractTemplateCmd.java | 4 +- .../user/template/ListTemplatesCmd.java | 5 +- .../user/template/RegisterTemplateCmd.java | 5 +- .../api/command/user/vm/AddIpToVmNicCmd.java | 11 +- .../api/command/user/vm/AddNicToVMCmd.java | 5 +- .../api/command/user/vm/DeployVMCmd.java | 11 +- .../api/command/user/vm/DestroyVMCmd.java | 5 +- .../api/command/user/vm/ListNicsCmd.java | 8 +- .../api/command/user/vm/RebootVMCmd.java | 5 +- .../command/user/vm/RemoveIpFromVmNicCmd.java | 10 +- .../command/user/vm/RemoveNicFromVMCmd.java | 5 +- .../command/user/vm/ResetVMPasswordCmd.java | 5 +- .../api/command/user/vm/ResetVMSSHKeyCmd.java | 4 +- .../api/command/user/vm/RestoreVMCmd.java | 5 +- .../api/command/user/vm/ScaleVMCmd.java | 4 +- .../api/command/user/vm/StartVMCmd.java | 5 +- .../api/command/user/vm/StopVMCmd.java | 5 +- .../user/vm/UpdateDefaultNicForVMCmd.java | 5 +- .../api/command/user/vm/UpdateVMCmd.java | 5 +- .../api/command/user/vm/UpgradeVMCmd.java | 5 +- .../user/vmgroup/CreateVMGroupCmd.java | 5 +- .../user/vmsnapshot/CreateVMSnapshotCmd.java | 4 +- .../user/vmsnapshot/DeleteVMSnapshotCmd.java | 5 +- .../vmsnapshot/RevertToVMSnapshotCmd.java | 4 +- .../user/volume/AddResourceDetailCmd.java | 4 +- .../command/user/volume/AttachVolumeCmd.java | 5 +- .../command/user/volume/CreateVolumeCmd.java | 7 +- .../command/user/volume/DeleteVolumeCmd.java | 7 +- .../command/user/volume/DetachVolumeCmd.java | 5 +- .../command/user/volume/ExtractVolumeCmd.java | 5 +- .../user/volume/RemoveResourceDetailCmd.java | 4 +- .../command/user/volume/ResizeVolumeCmd.java | 5 +- .../command/user/volume/UpdateVolumeCmd.java | 5 +- .../command/user/volume/UploadVolumeCmd.java | 5 +- .../user/vpc/CreateStaticRouteCmd.java | 5 +- .../api/command/user/vpc/CreateVPCCmd.java | 5 +- .../user/vpc/DeleteStaticRouteCmd.java | 5 +- .../api/command/user/vpn/AddVpnUserCmd.java | 5 +- .../user/vpn/CreateVpnCustomerGatewayCmd.java | 5 +- .../user/vpn/DeleteRemoteAccessVpnCmd.java | 5 +- .../command/user/vpn/RemoveVpnUserCmd.java | 7 +- .../user/vpn/ResetVpnConnectionCmd.java | 5 +- .../user/vpn/UpdateVpnCustomerGatewayCmd.java | 5 +- .../cloudstack/context/CallContext.java | 218 ++++++++++++++++ client/tomcatconf/applicationContext.xml.in | 1 - .../command/user/discovery/ListApisCmd.java | 5 +- .../admin/ratelimit/ResetApiLimitCmd.java | 5 +- .../user/ratelimit/GetApiLimitCmd.java | 7 +- .../DedicatedResourceManagerImpl.java | 12 +- .../manager/DedicatedApiUnitTest.java | 28 ++- .../implicitplanner/ImplicitPlannerTest.java | 31 ++- .../cloudstack/api/AddBaremetalDhcpCmd.java | 5 +- .../cloudstack/api/AddBaremetalPxeCmd.java | 5 +- .../vmware/VmwareDatacenterApiUnitTest.java | 30 ++- .../commands/AddBigSwitchVnsDeviceCmd.java | 4 +- .../commands/DeleteBigSwitchVnsDeviceCmd.java | 4 +- .../commands/AddCiscoAsa1000vResourceCmd.java | 5 +- .../api/commands/AddCiscoVnmcResourceCmd.java | 5 +- .../DeleteCiscoAsa1000vResourceCmd.java | 5 +- .../commands/DeleteCiscoVnmcResourceCmd.java | 5 +- .../network/element/CiscoVnmcElement.java | 7 +- .../lb/ElasticLoadBalancerManagerImpl.java | 8 +- .../api/commands/AddF5LoadBalancerCmd.java | 6 +- .../commands/ConfigureF5LoadBalancerCmd.java | 6 +- .../api/commands/DeleteF5LoadBalancerCmd.java | 6 +- .../InternalLBVMServiceTest.java | 19 +- .../cloud/api/commands/AddSrxFirewallCmd.java | 6 +- .../api/commands/ConfigureSrxFirewallCmd.java | 5 +- .../api/commands/DeleteSrxFirewallCmd.java | 5 +- .../commands/AddNetscalerLoadBalancerCmd.java | 6 +- .../ConfigureNetscalerLoadBalancerCmd.java | 6 +- .../DeleteNetscalerLoadBalancerCmd.java | 5 +- .../api/commands/AddNiciraNvpDeviceCmd.java | 6 +- .../commands/DeleteNiciraNvpDeviceCmd.java | 6 +- .../network/guru/OvsGuestNetworkGuru.java | 6 +- .../cloudstack/api/commands/AddSspCmd.java | 5 +- .../cloudstack/api/commands/DeleteSspCmd.java | 5 +- .../cloud/agent/manager/AgentManagerImpl.java | 38 +-- server/src/com/cloud/api/ApiDispatcher.java | 132 +++++----- .../src/com/cloud/api/ApiResponseHelper.java | 7 +- server/src/com/cloud/api/ApiServer.java | 85 +++---- server/src/com/cloud/api/ApiServlet.java | 27 +- .../com/cloud/api/query/QueryManagerImpl.java | 49 ++-- .../cloud/api/query/ViewResponseHelper.java | 12 +- .../api/query/dao/DataCenterJoinDaoImpl.java | 7 +- .../api/query/dao/TemplateJoinDaoImpl.java | 7 +- .../api/query/dao/VolumeJoinDaoImpl.java | 5 +- .../com/cloud/async/AsyncJobManagerImpl.java | 42 ++-- .../ConfigurationManagerImpl.java | 70 +++--- .../consoleproxy/ConsoleProxyManagerImpl.java | 6 +- .../cloud/event/ActionEventInterceptor.java | 21 +- .../src/com/cloud/event/ActionEventUtils.java | 37 +-- .../metadata/ResourceMetaDataManagerImpl.java | 5 +- .../com/cloud/network/NetworkManagerImpl.java | 31 +-- .../com/cloud/network/NetworkServiceImpl.java | 61 ++--- .../network/NetworkUsageManagerImpl.java | 3 +- .../network/as/AutoScaleManagerImpl.java | 44 ++-- .../network/firewall/FirewallManagerImpl.java | 17 +- .../guru/ExternalGuestNetworkGuru.java | 6 +- .../cloud/network/guru/GuestNetworkGuru.java | 8 +- .../network/lb/LoadBalancingRulesManager.java | 5 +- .../lb/LoadBalancingRulesManagerImpl.java | 61 ++--- .../VirtualNetworkApplianceManagerImpl.java | 238 +++++++++--------- .../cloud/network/rules/RulesManagerImpl.java | 43 ++-- .../security/SecurityGroupManagerImpl.java | 17 +- .../network/vpc/NetworkACLManagerImpl.java | 7 +- .../network/vpc/NetworkACLServiceImpl.java | 19 +- .../com/cloud/network/vpc/VpcManagerImpl.java | 57 +++-- .../vpn/RemoteAccessVpnManagerImpl.java | 28 +-- .../network/vpn/Site2SiteVpnManagerImpl.java | 35 +-- .../cloud/projects/ProjectManagerImpl.java | 30 +-- .../cloud/resource/ResourceManagerImpl.java | 14 +- .../ResourceLimitManagerImpl.java | 9 +- .../cloud/server/ManagementServerImpl.java | 70 +++--- .../com/cloud/storage/StorageManagerImpl.java | 20 +- .../storage/StoragePoolAutomationImpl.java | 11 +- .../com/cloud/storage/VolumeManagerImpl.java | 24 +- .../SecondaryStorageManagerImpl.java | 6 +- .../storage/snapshot/SnapshotManagerImpl.java | 23 +- .../cloud/tags/TaggedResourceManagerImpl.java | 8 +- .../cloud/template/TemplateAdapterBase.java | 25 +- .../cloud/template/TemplateManagerImpl.java | 47 ++-- .../src/com/cloud/usage/UsageServiceImpl.java | 5 +- .../com/cloud/user/AccountManagerImpl.java | 75 +++--- .../src/com/cloud/user/DomainManagerImpl.java | 32 +-- .../src/com/cloud/vm/UserVmManagerImpl.java | 85 ++++--- .../vm/snapshot/VMSnapshotManagerImpl.java | 7 +- .../affinity/AffinityGroupServiceImpl.java | 12 +- .../ApplicationLoadBalancerManagerImpl.java | 9 +- .../GlobalLoadBalancingRulesServiceImpl.java | 25 +- .../ConfigurationManagerTest.java | 43 ++-- .../network/DedicateGuestVlanRangesTest.java | 43 ++-- .../test/com/cloud/vm/UserVmManagerTest.java | 158 +++++++++--- .../com/cloud/vpc/NetworkACLManagerTest.java | 65 +++-- .../com/cloud/vpc/NetworkACLServiceTest.java | 61 +++-- server/test/com/cloud/vpc/VpcTest.java | 93 ++++--- .../affinity/AffinityApiUnitTest.java | 34 ++- .../lb/ApplicationLoadBalancerTest.java | 39 +-- .../ChildTestConfiguration.java | 26 +- .../CreateNetworkOfferingTest.java | 42 ++-- .../cloudstack/region/RegionManagerTest.java | 3 +- ...obalLoadBalancingRulesServiceImplTest.java | 124 +++++---- .../exception/CloudRuntimeException.java | 21 +- 270 files changed, 2367 insertions(+), 1819 deletions(-) delete mode 100644 api/src/com/cloud/user/UserContext.java delete mode 100644 api/src/com/cloud/user/UserContextInitializer.java create mode 100644 api/src/org/apache/cloudstack/context/CallContext.java diff --git a/api/src/com/cloud/user/UserContext.java b/api/src/com/cloud/user/UserContext.java deleted file mode 100644 index fdd19d4d9fa..00000000000 --- a/api/src/com/cloud/user/UserContext.java +++ /dev/null @@ -1,163 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.user; - -import com.cloud.utils.component.ComponentContext; -import javax.inject.Inject; - -public class UserContext { - private static ThreadLocal s_currentContext = new ThreadLocal(); - - private long userId; - private String sessionId; - private Account account; - private long startEventId = 0; - private long accountId; - private String eventDetails; - private boolean apiServer; - private Class entityType; - private String entityUUID; - - @Inject private AccountService _accountMgr = null; - - public UserContext() { - } - - public UserContext(long userId, Account accountObject, String sessionId, boolean apiServer) { - this.userId = userId; - this.account = accountObject; - this.sessionId = sessionId; - this.apiServer = apiServer; - } - - public long getCallerUserId() { - return userId; - } - - public User getCallerUser() { - if (_accountMgr == null) { - _accountMgr = ComponentContext.getComponent(AccountService.class); - } - return _accountMgr.getActiveUser(userId); - } - - public void setCallerUserId(long userId) { - this.userId = userId; - } - - public String getSessionId() { - return sessionId; - } - - public Account getCaller() { - return account; - } - - public void setCaller(Account accountObject) { - this.account = accountObject; - } - - public void setSessionKey(String sessionId) { - this.sessionId = sessionId; - } - - public boolean isApiServer() { - return apiServer; - } - - public void setApiServer(boolean apiServer) { - this.apiServer = apiServer; - } - - public static UserContext current() { - UserContext context = s_currentContext.get(); - if (context == null) { - // - // TODO: we should enforce explicit UserContext setup at major entry-points for security concerns, - // however, there are many places that run background jobs assume the system context. - // - // If there is a security concern, all entry points from user (including the front end that takes HTTP - // request in and - // the core async-job manager that runs commands from user) have explicitly setup the UserContext. - // - return UserContextInitializer.getInstance().getAdminContext(); - } - return context; - } - - public static void updateContext(long userId, Account accountObject, String sessionId) { - UserContext context = current(); - assert (context != null) : "Context should be already setup before you can call this one"; - - context.setCallerUserId(userId); - context.setCaller(accountObject); - context.setSessionKey(sessionId); - } - - public static void registerContext(long userId, Account accountObject, String sessionId, boolean apiServer) { - s_currentContext.set(new UserContext(userId, accountObject, sessionId, apiServer)); - } - - public static void unregisterContext() { - s_currentContext.set(null); - } - - public void setStartEventId(long startEventId) { - this.startEventId = startEventId; - } - - public long getStartEventId() { - return startEventId; - } - - public long getAccountId() { - return accountId; - } - - public void setAccountId(long accountId) { - this.accountId = accountId; - } - - public void setEventDetails(String eventDetails) { - this.eventDetails = eventDetails; - } - - 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; - } -} diff --git a/api/src/com/cloud/user/UserContextInitializer.java b/api/src/com/cloud/user/UserContextInitializer.java deleted file mode 100644 index a54596373eb..00000000000 --- a/api/src/com/cloud/user/UserContextInitializer.java +++ /dev/null @@ -1,40 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.user; - -import javax.inject.Inject; - -import org.springframework.stereotype.Component; - -@Component -public class UserContextInitializer { - @Inject private AccountService _accountMgr; - - private static UserContextInitializer s_instance; - - public UserContextInitializer() { - s_instance = this; - } - - public static UserContextInitializer getInstance() { - return s_instance; - } - - public UserContext getAdminContext() { - return new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); - } -} diff --git a/api/src/org/apache/cloudstack/api/BaseAsyncCmd.java b/api/src/org/apache/cloudstack/api/BaseAsyncCmd.java index 022157a182e..0e6f95dc1af 100644 --- a/api/src/org/apache/cloudstack/api/BaseAsyncCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseAsyncCmd.java @@ -17,10 +17,10 @@ package org.apache.cloudstack.api; import org.apache.cloudstack.api.response.AsyncJobResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.async.AsyncJob; import com.cloud.user.User; -import com.cloud.user.UserContext; /** * queryAsyncJobResult API command. @@ -109,8 +109,8 @@ public abstract class BaseAsyncCmd extends BaseCmd { } protected long saveStartedEvent(String eventType, String description, Long startEventId) { - UserContext ctx = UserContext.current(); - Long userId = ctx.getCallerUserId(); + CallContext ctx = CallContext.current(); + Long userId = ctx.getCallingUserId(); userId = (userId == null) ? User.UID_SYSTEM : userId; Long startEvent = startEventId; if (startEvent == null) { @@ -124,8 +124,8 @@ public abstract class BaseAsyncCmd extends BaseCmd { } protected long saveCompletedEvent(String level, String eventType, String description, Long startEventId) { - UserContext ctx = UserContext.current(); - Long userId = ctx.getCallerUserId(); + CallContext ctx = CallContext.current(); + Long userId = ctx.getCallingUserId(); userId = (userId == null) ? User.UID_SYSTEM : userId; Long startEvent = startEventId; if (startEvent == null) { diff --git a/api/src/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java b/api/src/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java index 47aa6791943..88732ae6bf8 100644 --- a/api/src/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java @@ -19,11 +19,12 @@ package org.apache.cloudstack.api; import java.util.List; import org.apache.cloudstack.api.response.TemplatePermissionsResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; public class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd { public Logger s_logger = getLogger(); @@ -79,7 +80,7 @@ public class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd { public void execute(){ List accountNames = _templateService.listTemplatePermissions(this); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); boolean isAdmin = (isAdmin(account.getType())); TemplatePermissionsResponse response = _responseGenerator.createTemplatePermissionsResponse(accountNames, id, isAdmin); diff --git a/api/src/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java b/api/src/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java index cc74eb2007e..94325f6d4ff 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/account/CreateAccountCmd.java @@ -18,7 +18,7 @@ package org.apache.cloudstack.api.command.admin.account; import com.cloud.user.Account; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import java.util.Collection; @@ -160,7 +162,7 @@ public class CreateAccountCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Account Name: "+getAccountName()+", Domain Id:"+getDomainId()); + CallContext.current().setEventDetails("Account Name: "+getAccountName()+", Domain Id:"+getDomainId()); UserAccount userAccount = _accountService.createUserAccount(getUsername(), getPassword(), getFirstName(), getLastName(), getEmail(), getTimeZone(), getAccountName(), getAccountType(), getDomainId(), getNetworkDomain(), getDetails(), getAccountUUID(), getUserUUID()); if (userAccount != null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java b/api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java index 4a42fde9cac..b46036bddeb 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/account/DeleteAccountCmd.java @@ -27,13 +27,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "deleteAccount", description="Deletes a account, and all users associated with this account", responseObject=SuccessResponse.class) public class DeleteAccountCmd extends BaseAsyncCmd { @@ -74,7 +75,7 @@ public class DeleteAccountCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller();// Let's give the caller here for event logging. + Account account = CallContext.current().getCallingAccount();// Let's give the caller here for event logging. if (account != null) { return account.getAccountId(); } @@ -95,7 +96,7 @@ public class DeleteAccountCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Account Id: "+getId()); + CallContext.current().setEventDetails("Account Id: "+getId()); boolean result = _regionService.deleteUserAccount(this); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java b/api/src/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java index 6d25fde71a2..806a8a53a68 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/account/DisableAccountCmd.java @@ -27,14 +27,15 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "disableAccount", description="Disables an account", responseObject=AccountResponse.class) public class DisableAccountCmd extends BaseAsyncCmd { @@ -116,7 +117,7 @@ public class DisableAccountCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException{ - UserContext.current().setEventDetails("Account Name: "+getAccountName()+", Domain Id:"+getDomainId()); + CallContext.current().setEventDetails("Account Name: "+getAccountName()+", Domain Id:"+getDomainId()); Account result = _regionService.disableAccount(this); if (result != null){ AccountResponse response = _responseGenerator.createAccountResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java b/api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java index 91d61ccf582..c46318e1e1c 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/domain/CreateDomainCmd.java @@ -23,11 +23,12 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.domain.Domain; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createDomain", description="Creates a domain", responseObject=DomainResponse.class) public class CreateDomainCmd extends BaseCmd { @@ -88,7 +89,7 @@ public class CreateDomainCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Domain Name: "+getDomainName()+((getParentDomainId()!=null)?", Parent DomainId :"+getParentDomainId():"")); + CallContext.current().setEventDetails("Domain Name: "+getDomainName()+((getParentDomainId()!=null)?", Parent DomainId :"+getParentDomainId():"")); Domain domain = _domainService.createDomain(getDomainName(), getParentDomainId(), getNetworkDomain(), getDomainUUID()); if (domain != null) { DomainResponse response = _responseGenerator.createDomainResponse(domain); diff --git a/api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java b/api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java index 488a758caec..6302c2e063d 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/domain/DeleteDomainCmd.java @@ -26,13 +26,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.domain.Domain; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteDomain", description="Deletes a specified domain", responseObject=SuccessResponse.class) public class DeleteDomainCmd extends BaseAsyncCmd { @@ -95,7 +96,7 @@ public class DeleteDomainCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Domain Id: "+getId()); + CallContext.current().setEventDetails("Domain Id: "+getId()); boolean result = _regionService.deleteDomain(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java b/api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java index e658f49ada1..e4962d634a9 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/domain/UpdateDomainCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.domain.Domain; import com.cloud.user.Account; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; @APICommand(name = "updateDomain", description="Updates a domain with a new name", responseObject=DomainResponse.class) public class UpdateDomainCmd extends BaseCmd { @@ -86,7 +87,7 @@ public class UpdateDomainCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Domain Id: "+getId()); + CallContext.current().setEventDetails("Domain Id: "+getId()); Domain domain = _regionService.updateDomain(this); if (domain != null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java b/api/src/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java index ea85d129136..3179e500c3f 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/host/CancelMaintenanceCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.host.Host; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "cancelHostMaintenance", description="Cancels host maintenance.", responseObject=HostResponse.class) public class CancelMaintenanceCmd extends BaseAsyncCmd { @@ -68,7 +69,7 @@ public class CancelMaintenanceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java b/api/src/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java index fd3685ae54d..02d29b3a9de 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/host/PrepareForMaintenanceCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.host.Host; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "prepareHostForMaintenance", description="Prepares a host for maintenance.", responseObject=HostResponse.class) public class PrepareForMaintenanceCmd extends BaseAsyncCmd { @@ -68,7 +69,7 @@ public class PrepareForMaintenanceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java b/api/src/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java index 8a1ef79a24c..ec5f65eedb0 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/host/ReconnectHostCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.host.Host; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "reconnectHost", description="Reconnects a host.", responseObject=HostResponse.class) public class ReconnectHostCmd extends BaseAsyncCmd { @@ -68,7 +69,7 @@ public class ReconnectHostCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java b/api/src/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java index b11bcd2f582..2de452e08ef 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/host/ReleaseHostReservationCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "releaseHostReservation", description = "Releases host reservation.", responseObject = SuccessResponse.class) public class ReleaseHostReservationCmd extends BaseAsyncCmd { @@ -64,7 +65,7 @@ public class ReleaseHostReservationCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java index 86f30067b18..bfbe85edc7f 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/ConfigureInternalLoadBalancerElementCmd.java @@ -23,7 +23,7 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.VirtualRouterProvider; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -31,10 +31,13 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; + import org.apache.log4j.Logger; import javax.inject.Inject; + import java.util.List; @APICommand(name = "configureInternalLoadBalancerElement", responseObject=InternalLoadBalancerElementResponse.class, @@ -96,7 +99,7 @@ public class ConfigureInternalLoadBalancerElementCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Internal load balancer element: " + id); + CallContext.current().setEventDetails("Internal load balancer element: " + id); VirtualRouterProvider result = _service.get(0).configureInternalLoadBalancerElement(getId(), getEnabled()); if (result != null){ InternalLoadBalancerElementResponse routerResponse = _responseGenerator.createInternalLbElementResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java index 2902f7ae18a..007994983f7 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/CreateInternalLoadBalancerElementCmd.java @@ -28,14 +28,15 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; import org.apache.cloudstack.api.response.ProviderResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.VirtualRouterProvider; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createInternalLoadBalancerElement", responseObject=InternalLoadBalancerElementResponse.class, description="Create an Internal Load Balancer element.",since="4.2.0") public class CreateInternalLoadBalancerElementCmd extends BaseAsyncCreateCmd { @@ -82,7 +83,7 @@ public class CreateInternalLoadBalancerElementCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Virtual router element Id: "+getEntityId()); + CallContext.current().setEventDetails("Virtual router element Id: "+getEntityId()); VirtualRouterProvider result = _service.get(0).getInternalLoadBalancerElement(getEntityId()); if (result != null) { InternalLoadBalancerElementResponse response = _responseGenerator.createInternalLbElementResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java index 256804ff8ba..f70e04c2255 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/StartInternalLBVMCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -33,7 +35,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VirtualRouter.Role; -import com.cloud.user.UserContext; @APICommand(name = "startInternalLoadBalancerVM", responseObject=DomainRouterResponse.class, description="Starts an existing internal lb vm.") public class StartInternalLBVMCmd extends BaseAsyncCmd { @@ -100,13 +101,13 @@ public class StartInternalLBVMCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Internal Lb Vm Id: "+getId()); + CallContext.current().setEventDetails("Internal Lb Vm Id: "+getId()); VirtualRouter result = null; VirtualRouter router = _routerService.findRouter(getId()); if (router == null || router.getRole() != Role.INTERNAL_LB_VM) { throw new InvalidParameterValueException("Can't find internal lb vm by id"); } else { - result = _internalLbSvc.startInternalLbVm(getId(), UserContext.current().getCaller(), UserContext.current().getCallerUserId()); + result = _internalLbSvc.startInternalLbVm(getId(), CallContext.current().getCallingAccount(), CallContext.current().getCallingUserId()); } if (result != null){ diff --git a/api/src/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java index fd6a7dd4de2..d84f3abc0a2 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/internallb/StopInternalLBVMCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -32,7 +34,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VirtualRouter.Role; -import com.cloud.user.UserContext; @APICommand(name = "stopInternalLoadBalancerVM", description = "Stops an Internal LB vm.", responseObject = DomainRouterResponse.class) public class StopInternalLBVMCmd extends BaseAsyncCmd { @@ -103,13 +104,13 @@ public class StopInternalLBVMCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException { - UserContext.current().setEventDetails("Internal lb vm Id: "+getId()); + CallContext.current().setEventDetails("Internal lb vm Id: "+getId()); VirtualRouter result = null; VirtualRouter vm = _routerService.findRouter(getId()); if (vm == null || vm.getRole() != Role.INTERNAL_LB_VM) { throw new InvalidParameterValueException("Can't find internal lb vm by id"); } else { - result = _internalLbSvc.stopInternalLbVm(getId(), isForced(), UserContext.current().getCaller(), UserContext.current().getCallerUserId()); + result = _internalLbSvc.stopInternalLbVm(getId(), isForced(), CallContext.current().getCallingAccount(), CallContext.current().getCallingUserId()); } if (result != null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java b/api/src/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java index 280369a5b64..d56deb8608c 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/network/AddNetworkServiceProviderCmd.java @@ -27,13 +27,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.ProviderResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.PhysicalNetworkServiceProvider; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "addNetworkServiceProvider", description="Adds a network serviceProvider to a physical network", responseObject=ProviderResponse.class, since="3.0.0") public class AddNetworkServiceProviderCmd extends BaseAsyncCreateCmd { @@ -96,7 +97,7 @@ public class AddNetworkServiceProviderCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Network ServiceProvider Id: "+getEntityId()); + CallContext.current().setEventDetails("Network ServiceProvider Id: "+getEntityId()); PhysicalNetworkServiceProvider result = _networkService.getCreatedPhysicalNetworkServiceProvider(getEntityId()); if (result != null) { ProviderResponse response = _responseGenerator.createNetworkServiceProviderResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java index 6c1100a1a0d..3627e55e91b 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/network/CreatePhysicalNetworkCmd.java @@ -28,13 +28,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.PhysicalNetwork; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createPhysicalNetwork", description="Creates a physical network", responseObject=PhysicalNetworkResponse.class, since="3.0.0") public class CreatePhysicalNetworkCmd extends BaseAsyncCreateCmd { @@ -144,7 +145,7 @@ public class CreatePhysicalNetworkCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Physical Network Id: "+getEntityId()); + CallContext.current().setEventDetails("Physical Network Id: "+getEntityId()); PhysicalNetwork result = _networkService.getCreatedPhysicalNetwork(getEntityId()); if (result != null) { PhysicalNetworkResponse response = _responseGenerator.createPhysicalNetworkResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java index b5c015a5452..176412772d4 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/network/DeletePhysicalNetworkCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deletePhysicalNetwork", description="Deletes a Physical Network.", responseObject=SuccessResponse.class, since="3.0.0") public class DeletePhysicalNetworkCmd extends BaseAsyncCmd { @@ -68,7 +69,7 @@ public class DeletePhysicalNetworkCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Physical Network Id: " + id); + CallContext.current().setEventDetails("Physical Network Id: " + id); boolean result = _networkService.deletePhysicalNetwork(getId()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java index f9e96f62185..49a3d363a03 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/network/ReleaseDedicatedGuestVlanRangeCmd.java @@ -20,11 +20,13 @@ package org.apache.cloudstack.api.command.admin.network; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceInUseException; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.CounterResponse; import org.apache.cloudstack.api.response.GuestVlanRangeResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; @APICommand(name = "releaseDedicatedGuestVlanRange", description = "Releases a dedicated guest vlan range to the system", responseObject = SuccessResponse.class) @@ -80,7 +82,7 @@ public class ReleaseDedicatedGuestVlanRangeCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Dedicated guest vlan range Id: " + id); + CallContext.current().setEventDetails("Dedicated guest vlan range Id: " + id); boolean result = _networkService.releaseDedicatedGuestVlanRange(getId()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java index e28e9169c63..625abf0507d 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/ConfigureVirtualRouterElementCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -37,7 +39,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.VirtualRouterProvider; import com.cloud.network.element.VirtualRouterElementService; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "configureVirtualRouterElement", responseObject=VirtualRouterProviderResponse.class, description="Configures a virtual router element.") public class ConfigureVirtualRouterElementCmd extends BaseAsyncCmd { @@ -116,7 +117,7 @@ public class ConfigureVirtualRouterElementCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Virtual router element: " + id); + CallContext.current().setEventDetails("Virtual router element: " + id); VirtualRouterProvider result = _service.get(0).configure(this); if (result != null){ VirtualRouterProviderResponse routerResponse = _responseGenerator.createVirtualRouterProviderResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java index b3fca5addf1..66c8ae5cb74 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/CreateVirtualRouterElementCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProviderResponse; import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -37,7 +39,6 @@ import com.cloud.network.VirtualRouterProvider; import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType; import com.cloud.network.element.VirtualRouterElementService; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createVirtualRouterElement", responseObject=VirtualRouterProviderResponse.class, description="Create a virtual router element.") public class CreateVirtualRouterElementCmd extends BaseAsyncCreateCmd { @@ -98,7 +99,7 @@ public class CreateVirtualRouterElementCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Virtual router element Id: "+getEntityId()); + CallContext.current().setEventDetails("Virtual router element Id: "+getEntityId()); VirtualRouterProvider result = _service.get(0).getCreatedElement(getEntityId()); if (result != null) { VirtualRouterProviderResponse response = _responseGenerator.createVirtualRouterProviderResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java index d0dda29b1af..44ca56bf6e5 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/DestroyRouterCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "destroyRouter", description = "Destroys a router.", responseObject = DomainRouterResponse.class) public class DestroyRouterCmd extends BaseAsyncCmd { @@ -95,10 +96,10 @@ public class DestroyRouterCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException { - UserContext ctx = UserContext.current(); + CallContext ctx = CallContext.current(); ctx.setEventDetails("Router Id: "+getId()); - VirtualRouter result = _routerService.destroyRouter(getId(), ctx.getCaller(), ctx.getCallerUserId()); + VirtualRouter result = _routerService.destroyRouter(getId(), ctx.getCallingAccount(), ctx.getCallingUserId()); if (result != null) { DomainRouterResponse response = _responseGenerator.createDomainRouterResponse(result); response.setResponseName(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java index 504b715c1c4..0c2cbc3fda6 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/RebootRouterCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -32,7 +34,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "rebootRouter", description="Starts a router.", responseObject=DomainRouterResponse.class) public class RebootRouterCmd extends BaseAsyncCmd { @@ -95,7 +96,7 @@ public class RebootRouterCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Router Id: "+getId()); + CallContext.current().setEventDetails("Router Id: "+getId()); VirtualRouter result = _routerService.rebootRouter(this.getId(), true); if (result != null){ DomainRouterResponse response = _responseGenerator.createDomainRouterResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java index b575bf572a6..69819071d7e 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/StartRouterCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -34,7 +36,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "startRouter", responseObject=DomainRouterResponse.class, description="Starts a router.") public class StartRouterCmd extends BaseAsyncCmd { @@ -101,7 +102,7 @@ public class StartRouterCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Router Id: "+getId()); + CallContext.current().setEventDetails("Router Id: "+getId()); VirtualRouter result = null; VirtualRouter router = _routerService.findRouter(getId()); if (router == null || router.getRole() != Role.VIRTUAL_ROUTER) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java index 10aebc0220a..ab631e8310f 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/router/StopRouterCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -33,7 +35,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.router.VirtualRouter; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "stopRouter", description = "Stops a router.", responseObject = DomainRouterResponse.class) public class StopRouterCmd extends BaseAsyncCmd { @@ -104,7 +105,7 @@ public class StopRouterCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException { - UserContext.current().setEventDetails("Router Id: "+getId()); + CallContext.current().setEventDetails("Router Id: "+getId()); VirtualRouter result = null; VirtualRouter router = _routerService.findRouter(getId()); if (router == null || router.getRole() != Role.VIRTUAL_ROUTER) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java b/api/src/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java index 525e923a194..0a5efdaa1b6 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/storage/CancelPrimaryStorageMaintenanceCmd.java @@ -24,13 +24,14 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.StoragePoolResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceUnavailableException; import com.cloud.storage.StoragePool; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "cancelStorageMaintenance", description="Cancels maintenance for primary storage", responseObject=StoragePoolResponse.class) public class CancelPrimaryStorageMaintenanceCmd extends BaseAsyncCmd { @@ -81,7 +82,7 @@ public class CancelPrimaryStorageMaintenanceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java b/api/src/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java index 565ed075d7c..9a784ee986d 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/storage/PreparePrimaryStorageForMaintenanceCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.StoragePoolResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.storage.StoragePool; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "enableStorageMaintenance", description="Puts storage pool into maintenance state", responseObject=StoragePoolResponse.class) public class PreparePrimaryStorageForMaintenanceCmd extends BaseAsyncCmd { @@ -79,7 +80,7 @@ public class PreparePrimaryStorageForMaintenanceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java index 87c6696301e..b539df10e42 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/DestroySystemVmCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "destroySystemVm", responseObject=SystemVmResponse.class, description="Destroyes a system virtual machine.") @@ -56,7 +57,7 @@ public class DestroySystemVmCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -92,7 +93,7 @@ public class DestroySystemVmCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); VirtualMachine instance = _mgr.destroySystemVM(this); if (instance != null) { SystemVmResponse response = _responseGenerator.createSystemVmResponse(instance); diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java index 31871b92b8f..7b3436d4557 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/MigrateSystemVMCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.SystemVmInstanceResponse; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -35,7 +37,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.VirtualMachineMigrationException; import com.cloud.host.Host; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "migrateSystemVm", description="Attempts Migration of a system virtual machine to the host specified.", responseObject=SystemVmInstanceResponse.class) @@ -81,7 +82,7 @@ public class MigrateSystemVMCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -107,7 +108,7 @@ public class MigrateSystemVMCmd extends BaseAsyncCmd { throw new InvalidParameterValueException("Unable to find the host to migrate the VM, host id=" + getHostId()); } try{ - UserContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to host Id: "+ getHostId()); + CallContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to host Id: "+ getHostId()); //FIXME : Should not be calling UserVmService to migrate all types of VMs - need a generic VM layer VirtualMachine migratedVm = _userVmService.migrateVirtualMachine(getVirtualMachineId(), destinationHost); if (migratedVm != null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java index 8cb0718abb8..904faab7ccb 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/RebootSystemVmCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "rebootSystemVm", description="Reboots a system VM.", responseObject=SystemVmResponse.class) @@ -64,7 +65,7 @@ public class RebootSystemVmCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -98,7 +99,7 @@ public class RebootSystemVmCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); VirtualMachine result = _mgr.rebootSystemVM(this); if (result != null) { SystemVmResponse response = _responseGenerator.createSystemVmResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java index a077e246a46..61b457f6edf 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/ScaleSystemVMCmd.java @@ -18,15 +18,17 @@ package org.apache.cloudstack.api.command.admin.systemvm; import com.cloud.event.EventTypes; import com.cloud.exception.*; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd; import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.offering.ServiceOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "scaleSystemVm", responseObject=SystemVmResponse.class, description="Scale the service offering for a system vm (console proxy or secondary storage). " + @@ -71,7 +73,7 @@ public class ScaleSystemVMCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -81,7 +83,7 @@ public class ScaleSystemVMCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("SystemVm Id: "+getId()); + CallContext.current().setEventDetails("SystemVm Id: "+getId()); ServiceOffering serviceOffering = _configService.getServiceOffering(serviceOfferingId); if (serviceOffering == null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java index 1283d98eb02..1062ae43385 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/StartSystemVMCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "startSystemVm", responseObject=SystemVmResponse.class, description="Starts a system virtual machine.") @@ -68,7 +69,7 @@ public class StartSystemVMCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -102,7 +103,7 @@ public class StartSystemVMCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); VirtualMachine instance = _mgr.startSystemVM(getId()); if (instance != null) { SystemVmResponse response = _responseGenerator.createSystemVmResponse(instance); diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java index 9954330db53..c14754011db 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/StopSystemVmCmd.java @@ -24,13 +24,14 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "stopSystemVm", description="Stops a system VM.", responseObject=SystemVmResponse.class) @@ -69,7 +70,7 @@ public class StopSystemVmCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -109,7 +110,7 @@ public class StopSystemVmCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, ConcurrentOperationException { - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); VirtualMachine result = _mgr.stopSystemVM(this); if (result != null) { SystemVmResponse response = _responseGenerator.createSystemVmResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java index e91d0053c64..efb1a2fcdc7 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/systemvm/UpgradeSystemVMCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd; import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.offering.ServiceOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.VirtualMachine; @APICommand(name = "changeServiceForSystemVm", responseObject=SystemVmResponse.class, description="Changes the service offering for a system vm (console proxy or secondary storage). " + @@ -75,7 +76,7 @@ public class UpgradeSystemVMCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -85,7 +86,7 @@ public class UpgradeSystemVMCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); ServiceOffering serviceOffering = _configService.getServiceOffering(serviceOfferingId); if (serviceOffering == null) { diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java index f9f2b03676b..3957e6948f3 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.TrafficTypeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.PhysicalNetworkTrafficType; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "addTrafficType", description="Adds traffic type to a physical network", responseObject=TrafficTypeResponse.class, since="3.0.0") public class AddTrafficTypeCmd extends BaseAsyncCreateCmd { @@ -116,7 +117,7 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("TrafficType Id: "+getEntityId()); + CallContext.current().setEventDetails("TrafficType Id: "+getEntityId()); PhysicalNetworkTrafficType result = _networkService.getPhysicalNetworkTrafficType(getEntityId()); if (result != null) { TrafficTypeResponse response = _responseGenerator.createTrafficTypeResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java index 7b3f230d1ec..378d6362a93 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/CreateUserCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "createUser", description="Creates a user for an account that already exists", responseObject=UserResponse.class) public class CreateUserCmd extends BaseCmd { @@ -119,7 +120,7 @@ public class CreateUserCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); @@ -138,7 +139,7 @@ public class CreateUserCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("UserName: "+getUserName()+", FirstName :"+getFirstName()+", LastName: "+getLastName()); + CallContext.current().setEventDetails("UserName: "+getUserName()+", FirstName :"+getFirstName()+", LastName: "+getLastName()); User user = _accountService.createUser(getUserName(), getPassword(), getFirstName(), getLastName(), getEmail(), getTimezone(), getAccountName(), getDomainId(), getUserUUID()); if (user != null) { UserResponse response = _responseGenerator.createUserResponse(user); diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java index 5683d58ab30..edf84a15faf 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/DeleteUserCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "deleteUser", description="Deletes a user for an account", responseObject=SuccessResponse.class) public class DeleteUserCmd extends BaseCmd { @@ -76,7 +77,7 @@ public class DeleteUserCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("UserId: "+getId()); + CallContext.current().setEventDetails("UserId: "+getId()); boolean result = _regionService.deleteUser(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java index a48755675f8..329c0709a2f 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/DisableUserCmd.java @@ -27,14 +27,15 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; @APICommand(name = "disableUser", description="Disables a user account", responseObject=UserResponse.class) public class DisableUserCmd extends BaseAsyncCmd { @@ -91,7 +92,7 @@ public class DisableUserCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("UserId: "+getId()); + CallContext.current().setEventDetails("UserId: "+getId()); UserAccount user = _regionService.disableUser(this); if (user != null){ diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java index 382f67c98de..0a242e93c58 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/EnableUserCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; @APICommand(name = "enableUser", description="Enables a user account", responseObject=UserResponse.class) public class EnableUserCmd extends BaseCmd { @@ -77,7 +78,7 @@ public class EnableUserCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("UserId: "+getId()); + CallContext.current().setEventDetails("UserId: "+getId()); UserAccount user = _regionService.enableUser(this); if (user != null){ diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java index 5ea2dbdef55..52ec2abc61d 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionService; + import org.apache.log4j.Logger; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; @APICommand(name = "updateUser", description="Updates a user account", responseObject=UserResponse.class) public class UpdateUserCmd extends BaseCmd { @@ -134,7 +135,7 @@ public class UpdateUserCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("UserId: "+getId()); + CallContext.current().setEventDetails("UserId: "+getId()); UserAccount user = _regionService.updateUser(this); if (user != null){ diff --git a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java index e9779ce6135..852f6b75bc3 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.StoragePoolResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -36,7 +38,6 @@ import com.cloud.exception.VirtualMachineMigrationException; import com.cloud.host.Host; import com.cloud.storage.StoragePool; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.vm.VirtualMachine; @@ -129,7 +130,7 @@ public class MigrateVMCmd extends BaseAsyncCmd { if (destinationHost == null) { throw new InvalidParameterValueException("Unable to find the host to migrate the VM, host id=" + getHostId()); } - UserContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to host Id: "+ getHostId()); + CallContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to host Id: "+ getHostId()); } StoragePool destStoragePool = null; @@ -138,7 +139,7 @@ public class MigrateVMCmd extends BaseAsyncCmd { if (destStoragePool == null) { throw new InvalidParameterValueException("Unable to find the storage pool to migrate the VM"); } - UserContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to storage pool Id: "+ getStoragePoolId()); + CallContext.current().setEventDetails("VM Id: " + getVirtualMachineId() + " to storage pool Id: "+ getStoragePoolId()); } try{ diff --git a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVirtualMachineWithVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVirtualMachineWithVolumeCmd.java index b1eaf11a251..ab0dcd52133 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVirtualMachineWithVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVirtualMachineWithVolumeCmd.java @@ -22,14 +22,16 @@ import java.util.Iterator; import java.util.Map; import org.apache.cloudstack.api.*; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; - import org.apache.cloudstack.api.BaseCmd.CommandType; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.StoragePoolResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InvalidParameterValueException; @@ -39,7 +41,6 @@ import com.cloud.exception.VirtualMachineMigrationException; import com.cloud.host.Host; import com.cloud.storage.StoragePool; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.vm.VirtualMachine; diff --git a/api/src/org/apache/cloudstack/api/command/admin/vpc/DeletePrivateGatewayCmd.java b/api/src/org/apache/cloudstack/api/command/admin/vpc/DeletePrivateGatewayCmd.java index 71dfba8380e..0a0614693dd 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/vpc/DeletePrivateGatewayCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/vpc/DeletePrivateGatewayCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PrivateGatewayResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -33,7 +35,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.VpcGateway; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deletePrivateGateway", description="Deletes a Private gateway", responseObject=SuccessResponse.class) public class DeletePrivateGatewayCmd extends BaseAsyncCmd { @@ -81,7 +82,7 @@ public class DeletePrivateGatewayCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, ConcurrentOperationException { - UserContext.current().setEventDetails("Network ACL Id: " + id); + CallContext.current().setEventDetails("Network ACL Id: " + id); boolean result = _vpcService.deleteVpcPrivateGateway(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java b/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java index 5cc905227ab..5799da1f867 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/CreateZoneCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createZone", description="Creates a Zone.", responseObject=ZoneResponse.class) public class CreateZoneCmd extends BaseCmd { @@ -163,7 +164,7 @@ public class CreateZoneCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Zone Name: "+getZoneName()); + CallContext.current().setEventDetails("Zone Name: "+getZoneName()); DataCenter result = _configService.createZone(this); if (result != null){ ZoneResponse response = _responseGenerator.createZoneResponse(result,false); diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/DeleteZoneCmd.java b/api/src/org/apache/cloudstack/api/command/admin/zone/DeleteZoneCmd.java index e3d14f729e3..98c8b4af482 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/zone/DeleteZoneCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/DeleteZoneCmd.java @@ -24,10 +24,11 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteZone", description="Deletes a Zone.", responseObject=SuccessResponse.class) public class DeleteZoneCmd extends BaseCmd { @@ -69,7 +70,7 @@ public class DeleteZoneCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Zone Id: "+getId()); + CallContext.current().setEventDetails("Zone Id: "+getId()); boolean result = _configService.deleteZone(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java b/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java index 16c334eebc8..c888995890b 100644 --- a/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/zone/UpdateZoneCmd.java @@ -26,11 +26,12 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateZone", description="Updates a Zone.", responseObject=ZoneResponse.class) public class UpdateZoneCmd extends BaseCmd { @@ -175,7 +176,7 @@ public class UpdateZoneCmd extends BaseCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Zone Id: "+getId()); + CallContext.current().setEventDetails("Zone Id: "+getId()); DataCenter result = _configService.editZone(this); if (result != null) { ZoneResponse response = _responseGenerator.createZoneResponse(result, false); diff --git a/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java index 58735f281e9..6a862547a8b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/account/AddAccountToProjectCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "addAccountToProject", description="Adds acoount to a project", responseObject=SuccessResponse.class, since="3.0.0") @@ -85,7 +86,7 @@ public class AddAccountToProjectCmd extends BaseAsyncCmd { throw new InvalidParameterValueException("Either accountName or email is required"); } - UserContext.current().setEventDetails("Project id: "+ projectId + "; accountName " + accountName); + CallContext.current().setEventDetails("Project id: "+ projectId + "; accountName " + accountName); boolean result = _projectService.addAccountToProject(getProjectId(), getAccountName(), getEmail()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java index df6deae1887..fcb0574d78a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/account/DeleteAccountFromProjectCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.project.DeleteProjectCmd; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "deleteAccountFromProject", description="Deletes account from the project", responseObject=SuccessResponse.class, since="3.0.0") public class DeleteAccountFromProjectCmd extends BaseAsyncCmd { @@ -74,7 +75,7 @@ public class DeleteAccountFromProjectCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Project id: "+ projectId + "; accountName " + accountName); + CallContext.current().setEventDetails("Project id: "+ projectId + "; accountName " + accountName); boolean result = _projectService.deleteAccountFromProject(projectId, accountName); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java b/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java index 6d7ec6acc95..d45d1326a3a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java @@ -34,6 +34,8 @@ import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.RegionResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; @@ -51,7 +53,6 @@ import com.cloud.network.Network; import com.cloud.network.vpc.Vpc; import com.cloud.projects.Project; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "associateIpAddress", description="Acquires and associates a public IP to an account.", responseObject=IPAddressResponse.class) public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { @@ -104,14 +105,14 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { if (accountName != null) { return accountName; } - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } public long getDomainId() { if (domainId != null) { return domainId; } - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } private long getZoneId() { @@ -192,7 +193,7 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (accountName != null && domainId != null) { Account account = _accountService.finalizeOwner(caller, accountName, domainId, projectId); return account.getId(); @@ -280,7 +281,7 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { @Override public void execute() throws ResourceUnavailableException, ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException { - UserContext.current().setEventDetails("Ip Id: " + getEntityId()); + CallContext.current().setEventDetails("Ip Id: " + getEntityId()); IpAddress result = null; diff --git a/api/src/org/apache/cloudstack/api/command/user/address/DisassociateIPAddrCmd.java b/api/src/org/apache/cloudstack/api/command/user/address/DisassociateIPAddrCmd.java index cbd802b3e62..4798823c97a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/address/DisassociateIPAddrCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/address/DisassociateIPAddrCmd.java @@ -26,6 +26,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -33,7 +35,6 @@ import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.IpAddress; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "disassociateIpAddress", description="Disassociates an ip address from the account.", responseObject=SuccessResponse.class) public class DisassociateIPAddrCmd extends BaseAsyncCmd { @@ -73,7 +74,7 @@ public class DisassociateIPAddrCmd extends BaseAsyncCmd { @Override public void execute() throws InsufficientAddressCapacityException{ - UserContext.current().setEventDetails("Ip Id: " + getIpAddressId()); + CallContext.current().setEventDetails("Ip Id: " + getIpAddressId()); boolean result = false; if (!isPortable(id)) { result = _networkService.releaseIpAddress(getIpAddressId()); diff --git a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/CreateAffinityGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/CreateAffinityGroupCmd.java index bc16310a485..59b9f17d0da 100644 --- a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/CreateAffinityGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/CreateAffinityGroupCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.BaseAsyncCreateCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createAffinityGroup", responseObject = AffinityGroupResponse.class, description = "Creates an affinity/anti-affinity group") public class CreateAffinityGroupCmd extends BaseAsyncCreateCmd { @@ -94,7 +95,7 @@ public class CreateAffinityGroupCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); diff --git a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/DeleteAffinityGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/DeleteAffinityGroupCmd.java index a237cba8d04..0fa8b2bb647 100644 --- a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/DeleteAffinityGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/DeleteAffinityGroupCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteAffinityGroup", description = "Deletes affinity group", responseObject = SuccessResponse.class) public class DeleteAffinityGroupCmd extends BaseAsyncCmd { @@ -100,7 +101,7 @@ public class DeleteAffinityGroupCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); diff --git a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/UpdateVMAffinityGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/UpdateVMAffinityGroupCmd.java index 8b0188cff65..11099a43a86 100644 --- a/api/src/org/apache/cloudstack/api/command/user/affinitygroup/UpdateVMAffinityGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/affinitygroup/UpdateVMAffinityGroupCmd.java @@ -31,6 +31,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -38,7 +40,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @@ -131,7 +132,7 @@ public class UpdateVMAffinityGroupCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException { - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _affinityGroupService.updateVMAffinityGroups(getId(), getAffinityGroupIdList()); ArrayList dc = new ArrayList(); dc.add(VMDetails.valueOf("affgrp")); diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmProfileCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmProfileCmd.java index f7ee2f5c96f..3b5567d7532 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmProfileCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateAutoScaleVmProfileCmd.java @@ -31,6 +31,8 @@ import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -39,7 +41,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.network.as.AutoScaleVmProfile; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "createAutoScaleVmProfile", description = "Creates a profile that contains information about the virtual machine which will be provisioned automatically by autoscale feature.", responseObject = AutoScaleVmProfileResponse.class) @SuppressWarnings("rawtypes") @@ -119,7 +120,7 @@ public class CreateAutoScaleVmProfileCmd extends BaseAsyncCreateCmd { if (autoscaleUserId != null) { return autoscaleUserId; } else { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } @@ -136,7 +137,7 @@ public class CreateAutoScaleVmProfileCmd extends BaseAsyncCreateCmd { User user = _entityMgr.findById(User.class, autoscaleUserId); account = _entityMgr.findById(Account.class, user.getAccountId()); } else { - account = UserContext.current().getCaller(); + account = CallContext.current().getCallingAccount(); } accountId = account.getAccountId(); domainId = account.getDomainId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateConditionCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateConditionCmd.java index 44f1c86d96f..dc0d244348a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateConditionCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/CreateConditionCmd.java @@ -27,12 +27,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ConditionResponse; import org.apache.cloudstack.api.response.CounterResponse; import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.as.Condition; -import com.cloud.user.UserContext; @APICommand(name = "createCondition", description = "Creates a condition", responseObject = ConditionResponse.class) public class CreateConditionCmd extends BaseAsyncCreateCmd { @@ -105,7 +106,7 @@ public class CreateConditionCmd extends BaseAsyncCreateCmd { public String getAccountName() { if (accountName == null) { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } return accountName; @@ -113,7 +114,7 @@ public class CreateConditionCmd extends BaseAsyncCreateCmd { public Long getDomainId() { if (domainId == null) { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } return domainId; } @@ -141,7 +142,7 @@ public class CreateConditionCmd extends BaseAsyncCreateCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, null, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScalePolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScalePolicyCmd.java index abf0ec096e6..579656cc508 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScalePolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScalePolicyCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScalePolicyResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScalePolicy; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteAutoScalePolicy", description = "Deletes a autoscale policy.", responseObject = SuccessResponse.class) public class DeleteAutoScalePolicyCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class DeleteAutoScalePolicyCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale Policy Id: " + getId()); + CallContext.current().setEventDetails("AutoScale Policy Id: " + getId()); boolean result = _autoScaleService.deleteAutoScalePolicy(id); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmGroupCmd.java index e9de4cb66bb..2d72836d068 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmGroupCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmGroup; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteAutoScaleVmGroup", description = "Deletes a autoscale vm group.", responseObject = SuccessResponse.class) public class DeleteAutoScaleVmGroupCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class DeleteAutoScaleVmGroupCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale Vm Group Id: " + getId()); + CallContext.current().setEventDetails("AutoScale Vm Group Id: " + getId()); boolean result = _autoScaleService.deleteAutoScaleVmGroup(id); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmProfileCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmProfileCmd.java index 0353c952fb7..d0061f8dbb7 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmProfileCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/DeleteAutoScaleVmProfileCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmProfile; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteAutoScaleVmProfile", description = "Deletes a autoscale vm profile.", responseObject = SuccessResponse.class) public class DeleteAutoScaleVmProfileCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class DeleteAutoScaleVmProfileCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale VM Profile Id: " + getId()); + CallContext.current().setEventDetails("AutoScale VM Profile Id: " + getId()); boolean result = _autoScaleService.deleteAutoScaleVmProfile(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScalePolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScalePolicyCmd.java index dcd4aa6fd3a..1f5918883ca 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScalePolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScalePolicyCmd.java @@ -28,12 +28,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScalePolicyResponse; import org.apache.cloudstack.api.response.ConditionResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScalePolicy; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateAutoScalePolicy", description = "Updates an existing autoscale policy.", responseObject = AutoScalePolicyResponse.class) public class UpdateAutoScalePolicyCmd extends BaseAsyncCmd { @@ -61,7 +62,7 @@ public class UpdateAutoScalePolicyCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale Policy Id: " + getId()); + CallContext.current().setEventDetails("AutoScale Policy Id: " + getId()); AutoScalePolicy result = _autoScaleService.updateAutoScalePolicy(this); if (result != null) { AutoScalePolicyResponse response = _responseGenerator.createAutoScalePolicyResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java index 460803ece27..cad41e99a99 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java @@ -28,12 +28,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScalePolicyResponse; import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmGroup; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateAutoScaleVmGroup", description = "Updates an existing autoscale vm group.", responseObject = AutoScaleVmGroupResponse.class) public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCmd { @@ -72,7 +73,7 @@ public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale Vm Group Id: " + getId()); + CallContext.current().setEventDetails("AutoScale Vm Group Id: " + getId()); AutoScaleVmGroup result = _autoScaleService.updateAutoScaleVmGroup(this); if (result != null) { AutoScaleVmGroupResponse response = _responseGenerator.createAutoScaleVmGroupResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java index d2fd213c394..2eb4438390c 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java @@ -29,12 +29,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmProfile; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateAutoScaleVmProfile", description = "Updates an existing autoscale vm profile.", responseObject = AutoScaleVmProfileResponse.class) public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCmd { @@ -70,7 +71,7 @@ public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("AutoScale Policy Id: " + getId()); + CallContext.current().setEventDetails("AutoScale Policy Id: " + getId()); AutoScaleVmProfile result = _autoScaleService.updateAutoScaleVmProfile(this); if (result != null) { AutoScaleVmProfileResponse response = _responseGenerator.createAutoScaleVmProfileResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/event/ArchiveEventsCmd.java b/api/src/org/apache/cloudstack/api/command/user/event/ArchiveEventsCmd.java index c5594e26ed6..51c78e53213 100644 --- a/api/src/org/apache/cloudstack/api/command/user/event/ArchiveEventsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/event/ArchiveEventsCmd.java @@ -27,11 +27,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.EventResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "archiveEvents", description = "Archive one or more events.", responseObject = SuccessResponse.class) public class ArchiveEventsCmd extends BaseCmd { @@ -90,7 +91,7 @@ public class ArchiveEventsCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java b/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java index 548c2f3fd17..964cee3b615 100644 --- a/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java @@ -27,11 +27,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.EventResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteEvents", description = "Delete one or more events.", responseObject = SuccessResponse.class) public class DeleteEventsCmd extends BaseCmd { @@ -90,7 +91,7 @@ public class DeleteEventsCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/CreateEgressFirewallRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/CreateEgressFirewallRuleCmd.java index 3714c06947c..05a2c5db731 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/CreateEgressFirewallRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/CreateEgressFirewallRuleCmd.java @@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.user.firewall; import java.util.ArrayList; import java.util.List; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; @@ -32,6 +33,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; @@ -40,7 +42,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.rules.FirewallRule; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @APICommand(name = "createEgressFirewallRule", description = "Creates a egress firewall rule for a given network ", responseObject = FirewallResponse.class) @@ -128,12 +129,12 @@ public class CreateEgressFirewallRuleCmd extends BaseAsyncCreateCmd implements F @Override public void execute() throws ResourceUnavailableException { - UserContext callerContext = UserContext.current(); + CallContext callerContext = CallContext.current(); boolean success = false; FirewallRule rule = _entityMgr.findById(FirewallRule.class, getEntityId()); try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); - success = _firewallService.applyEgressFirewallRules (rule, callerContext.getCaller()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); + success = _firewallService.applyEgressFirewallRules (rule, callerContext.getCallingAccount()); // State is different after the rule is applied, so get new object here rule = _entityMgr.findById(FirewallRule.class, getEntityId()); FirewallResponse fwResponse = new FirewallResponse(); @@ -204,7 +205,7 @@ public class CreateEgressFirewallRuleCmd extends BaseAsyncCreateCmd implements F @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/CreateFirewallRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/CreateFirewallRuleCmd.java index b94ea17cb6d..ff8e2835c52 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/CreateFirewallRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/CreateFirewallRuleCmd.java @@ -29,6 +29,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallResponse; import org.apache.cloudstack.api.response.IPAddressResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -38,7 +40,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.IpAddress; import com.cloud.network.rules.FirewallRule; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @APICommand(name = "createFirewallRule", description = "Creates a firewall rule for a given ip address", responseObject = FirewallResponse.class) @@ -116,12 +117,12 @@ public class CreateFirewallRuleCmd extends BaseAsyncCreateCmd implements Firewal @Override public void execute() throws ResourceUnavailableException { - UserContext callerContext = UserContext.current(); + CallContext callerContext = CallContext.current(); boolean success = false; FirewallRule rule = _entityMgr.findById(FirewallRule.class, getEntityId()); try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); - success = _firewallService.applyIngressFirewallRules(rule.getSourceIpAddressId(), callerContext.getCaller()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); + success = _firewallService.applyIngressFirewallRules(rule.getSourceIpAddressId(), callerContext.getCallingAccount()); // State is different after the rule is applied, so get new object here rule = _entityMgr.findById(FirewallRule.class, getEntityId()); @@ -211,7 +212,7 @@ public class CreateFirewallRuleCmd extends BaseAsyncCreateCmd implements Firewal @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/CreatePortForwardingRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/CreatePortForwardingRuleCmd.java index 372e00f5a66..ff63d088e96 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/CreatePortForwardingRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/CreatePortForwardingRuleCmd.java @@ -30,6 +30,8 @@ import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -39,7 +41,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.IpAddress; import com.cloud.network.rules.PortForwardingRule; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.Ip; @APICommand(name = "createPortForwardingRule", description = "Creates a port forwarding rule", responseObject = FirewallRuleResponse.class) @@ -171,17 +172,17 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P @Override public void execute() throws ResourceUnavailableException { - UserContext callerContext = UserContext.current(); + CallContext callerContext = CallContext.current(); boolean success = true; PortForwardingRule rule = null; try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); if (getOpenFirewall()) { - success = success && _firewallService.applyIngressFirewallRules(ipAddressId, callerContext.getCaller()); + success = success && _firewallService.applyIngressFirewallRules(ipAddressId, callerContext.getCallingAccount()); } - success = success && _rulesService.applyPortForwardingRules(ipAddressId, callerContext.getCaller()); + success = success && _rulesService.applyPortForwardingRules(ipAddressId, callerContext.getCallingAccount()); // State is different after the rule is applied, so get new object here rule = _entityMgr.findById(PortForwardingRule.class, getEntityId()); @@ -271,7 +272,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteEgressFirewallRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteEgressFirewallRuleCmd.java index ec824b78647..c3f1a94543e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteEgressFirewallRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteEgressFirewallRuleCmd.java @@ -18,6 +18,7 @@ package org.apache.cloudstack.api.command.user.firewall; import org.apache.cloudstack.api.APICommand; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiCommandJobType; @@ -30,12 +31,12 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.FirewallRule; -import com.cloud.user.UserContext; @APICommand(name = "deleteEgressFirewallRule", description="Deletes an ggress firewall rule", responseObject=SuccessResponse.class) public class DeleteEgressFirewallRuleCmd extends BaseAsyncCmd { @@ -94,7 +95,7 @@ public class DeleteEgressFirewallRuleCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Rule Id: " + id); + CallContext.current().setEventDetails("Rule Id: " + id); boolean result = _firewallService.revokeFirewallRule(id, true); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteFirewallRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteFirewallRuleCmd.java index 3aeb7e216c3..c04cae75b7e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteFirewallRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/DeleteFirewallRuleCmd.java @@ -26,13 +26,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.FirewallRule; -import com.cloud.user.UserContext; @APICommand(name = "deleteFirewallRule", description="Deletes a firewall rule", responseObject=SuccessResponse.class) public class DeleteFirewallRuleCmd extends BaseAsyncCmd { @@ -92,7 +93,7 @@ public class DeleteFirewallRuleCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Rule Id: " + id); + CallContext.current().setEventDetails("Rule Id: " + id); boolean result = _firewallService.revokeFirewallRule(id, true); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/firewall/DeletePortForwardingRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/firewall/DeletePortForwardingRuleCmd.java index e9caa053925..47c9ee039d9 100644 --- a/api/src/org/apache/cloudstack/api/command/user/firewall/DeletePortForwardingRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/firewall/DeletePortForwardingRuleCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.PortForwardingRule; -import com.cloud.user.UserContext; @APICommand(name = "deletePortForwardingRule", description="Deletes a port forwarding rule", responseObject=SuccessResponse.class) public class DeletePortForwardingRuleCmd extends BaseAsyncCmd { @@ -92,7 +93,7 @@ public class DeletePortForwardingRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Rule Id: "+id); + CallContext.current().setEventDetails("Rule Id: "+id); //revoke corresponding firewall rule first boolean result = _firewallService.revokeRelatedFirewallRule(id, true); result = result && _rulesService.revokePortForwardingRule(id, true); diff --git a/api/src/org/apache/cloudstack/api/command/user/iso/AttachIsoCmd.java b/api/src/org/apache/cloudstack/api/command/user/iso/AttachIsoCmd.java index 933ee8bde53..11e42708376 100644 --- a/api/src/org/apache/cloudstack/api/command/user/iso/AttachIsoCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/iso/AttachIsoCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.vm.DeployVMCmd; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "attachIso", description="Attaches an ISO to a virtual machine.", responseObject=UserVmResponse.class) @@ -95,7 +96,7 @@ public class AttachIsoCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: " +getVirtualMachineId()+ " ISO Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: " +getVirtualMachineId()+ " ISO Id: "+getId()); boolean result = _templateService.attachIso(id, virtualMachineId); if (result) { UserVm userVm = _responseGenerator.findUserVmById(virtualMachineId); diff --git a/api/src/org/apache/cloudstack/api/command/user/iso/DeleteIsoCmd.java b/api/src/org/apache/cloudstack/api/command/user/iso/DeleteIsoCmd.java index ef154187446..a7ec9f69866 100644 --- a/api/src/org/apache/cloudstack/api/command/user/iso/DeleteIsoCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/iso/DeleteIsoCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteIso", description="Deletes an ISO file.", responseObject=SuccessResponse.class) public class DeleteIsoCmd extends BaseAsyncCmd { @@ -106,7 +107,7 @@ public class DeleteIsoCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("ISO Id: "+getId()); + CallContext.current().setEventDetails("ISO Id: "+getId()); boolean result = _templateService.deleteIso(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/iso/ExtractIsoCmd.java b/api/src/org/apache/cloudstack/api/command/user/iso/ExtractIsoCmd.java index 4e6ff574d74..5378ceb6cb4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/iso/ExtractIsoCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/iso/ExtractIsoCmd.java @@ -26,13 +26,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ExtractResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InternalErrorException; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; @APICommand(name = "extractIso", description="Extracts an ISO", responseObject=ExtractResponse.class) @@ -123,7 +124,7 @@ public class ExtractIsoCmd extends BaseAsyncCmd { @Override public void execute(){ try { - UserContext.current().setEventDetails(getEventDescription()); + CallContext.current().setEventDetails(getEventDescription()); String uploadUrl = _templateService.extract(this); if (uploadUrl != null) { ExtractResponse response = _responseGenerator.createExtractResponse(id, zoneId, getEntityOwnerId(), mode, uploadUrl); diff --git a/api/src/org/apache/cloudstack/api/command/user/iso/ListIsosCmd.java b/api/src/org/apache/cloudstack/api/command/user/iso/ListIsosCmd.java index 09e2c1cb648..c3f558bd249 100644 --- a/api/src/org/apache/cloudstack/api/command/user/iso/ListIsosCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/iso/ListIsosCmd.java @@ -28,11 +28,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.template.VirtualMachineTemplate.TemplateFilter; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; @APICommand(name = "listIsos", description="Lists all available ISO files.", responseObject=TemplateResponse.class) @@ -116,7 +117,7 @@ public class ListIsosCmd extends BaseListTaggedResourcesCmd { } public boolean listInReadyState() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); // It is account specific if account is admin type and domainId and accountName are not null boolean isAccountSpecific = (account == null || isAdmin(account.getType())) && (getAccountName() != null) && (getDomainId() != null); // Show only those that are downloaded. diff --git a/api/src/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java b/api/src/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java index 943cbe9674b..84f69808b81 100644 --- a/api/src/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java @@ -30,11 +30,12 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.ResourceAllocationException; import com.cloud.template.VirtualMachineTemplate; -import com.cloud.user.UserContext; @APICommand(name = "registerIso", responseObject=TemplateResponse.class, description="Registers an existing ISO into the CloudStack Cloud.") public class RegisterIsoCmd extends BaseCmd { @@ -169,7 +170,7 @@ public class RegisterIsoCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java index e0f9bcdd80d..b94777e0cc1 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/AssignToLoadBalancerRuleCmd.java @@ -27,13 +27,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; @APICommand(name = "assignToLoadBalancerRule", description="Assigns virtual machine or a list of virtual machines to a load balancer rule.", responseObject=SuccessResponse.class) @@ -96,7 +97,7 @@ public class AssignToLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Load balancer Id: "+getLoadBalancerId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); + CallContext.current().setEventDetails("Load balancer Id: "+getLoadBalancerId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); boolean result = _lbService.assignToLoadBalancer(getLoadBalancerId(), virtualMachineIds); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateApplicationLoadBalancerCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateApplicationLoadBalancerCmd.java index f085f5a74a9..4fb6f40a728 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateApplicationLoadBalancerCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateApplicationLoadBalancerCmd.java @@ -25,7 +25,9 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ApplicationLoadBalancerResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -37,7 +39,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.rules.LoadBalancerContainer.Scheme; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @APICommand(name = "createLoadBalancer", description="Creates a Load Balancer", responseObject=ApplicationLoadBalancerResponse.class, since="4.2.0") @@ -180,7 +181,7 @@ public class CreateApplicationLoadBalancerCmd extends BaseAsyncCreateCmd { public void execute() throws ResourceAllocationException, ResourceUnavailableException { ApplicationLoadBalancerRule rule = null; try { - UserContext.current().setEventDetails("Load Balancer Id: " + getEntityId()); + CallContext.current().setEventDetails("Load Balancer Id: " + getEntityId()); // State might be different after the rule is applied, so get new object here rule = _entityMgr.findById(ApplicationLoadBalancerRule.class, getEntityId()); ApplicationLoadBalancerResponse lbResponse = _responseGenerator.createLoadBalancerContainerReponse(rule, _lbService.getLbInstances(getEntityId())); diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java index ac0ec3a9dab..d274dd7609b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java @@ -18,6 +18,7 @@ package org.apache.cloudstack.api.command.user.loadbalancer; import org.apache.cloudstack.api.response.FirewallRuleResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; @@ -26,15 +27,18 @@ import org.apache.cloudstack.api.BaseAsyncCreateCmd; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; + import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.HealthCheckPolicy; + import org.apache.cloudstack.api.response.LBHealthCheckResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createLBHealthCheckPolicy", description = "Creates a Load Balancer healthcheck policy ", responseObject = LBHealthCheckResponse.class, since="4.2.0") @@ -97,7 +101,7 @@ public class CreateLBHealthCheckPolicyCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -127,7 +131,7 @@ public class CreateLBHealthCheckPolicyCmd extends BaseAsyncCreateCmd { boolean success = false; try { - UserContext.current().setEventDetails("Load balancer healthcheck policy Id : " + getEntityId()); + CallContext.current().setEventDetails("Load balancer healthcheck policy Id : " + getEntityId()); success = _lbService.applyLBHealthCheckPolicy(this); if (success) { // State might be different after the rule is applied, so get new object here diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBStickinessPolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBStickinessPolicyCmd.java index 02b253a7c0c..1684430a67b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBStickinessPolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBStickinessPolicyCmd.java @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.LBStickinessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -36,7 +38,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.StickinessPolicy; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createLBStickinessPolicy", description = "Creates a Load Balancer stickiness policy ", responseObject = LBStickinessResponse.class, since="3.0.0") @@ -103,7 +104,7 @@ public class CreateLBStickinessPolicyCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -117,7 +118,7 @@ public class CreateLBStickinessPolicyCmd extends BaseAsyncCreateCmd { boolean success = false; try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); success = _lbService.applyLBStickinessPolicy(this); if (success) { // State might be different after the rule is applied, so get new object here diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java index 8e15a6acf5d..f7a02855103 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java @@ -30,6 +30,8 @@ import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.LoadBalancerResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; @@ -44,7 +46,6 @@ import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @APICommand(name = "createLoadBalancerRule", description="Creates a load balancer rule", responseObject=LoadBalancerResponse.class) @@ -237,14 +238,14 @@ public class CreateLoadBalancerRuleCmd extends BaseAsyncCreateCmd /*implements @Override public void execute() throws ResourceAllocationException, ResourceUnavailableException { - UserContext callerContext = UserContext.current(); + CallContext callerContext = CallContext.current(); boolean success = true; LoadBalancer rule = null; try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); if (getOpenFirewall()) { - success = success && _firewallService.applyIngressFirewallRules(getSourceIpAddressId(), callerContext.getCaller()); + success = success && _firewallService.applyIngressFirewallRules(getSourceIpAddressId(), callerContext.getCallingAccount()); } // State might be different after the rule is applied, so get new object here @@ -327,7 +328,7 @@ public class CreateLoadBalancerRuleCmd extends BaseAsyncCreateCmd /*implements if (domainId != null) { return domainId; } - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } public int getDefaultPortStart() { diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteApplicationLoadBalancerCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteApplicationLoadBalancerCmd.java index 5c83df10fc1..ae41e755185 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteApplicationLoadBalancerCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteApplicationLoadBalancerCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; -import com.cloud.user.UserContext; @APICommand(name = "deleteLoadBalancer", description="Deletes a load balancer", responseObject=SuccessResponse.class, since="4.2.0") public class DeleteApplicationLoadBalancerCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class DeleteApplicationLoadBalancerCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Load balancer Id: " + getId()); + CallContext.current().setEventDetails("Load balancer Id: " + getId()); boolean result = _appLbService.deleteApplicationLoadBalancer(getId()); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java index bf91da51d68..1d4b88eb66f 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.user.loadbalancer; import org.apache.cloudstack.api.response.LBHealthCheckResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; @@ -26,12 +27,13 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.HealthCheckPolicy; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteLBHealthCheckPolicy", description = "Deletes a load balancer HealthCheck policy.", responseObject = SuccessResponse.class, since="4.2.0") public class DeleteLBHealthCheckPolicyCmd extends BaseAsyncCmd { @@ -64,7 +66,7 @@ public class DeleteLBHealthCheckPolicyCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -84,7 +86,7 @@ public class DeleteLBHealthCheckPolicyCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("Load balancer healthcheck policy Id: " + getId()); + CallContext.current().setEventDetails("Load balancer healthcheck policy Id: " + getId()); boolean result = _lbService.deleteLBHealthCheckPolicy(getId() , true); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBStickinessPolicyCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBStickinessPolicyCmd.java index fc7be24d482..ba2df96d122 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBStickinessPolicyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBStickinessPolicyCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.LBStickinessResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.StickinessPolicy; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteLBStickinessPolicy", description = "Deletes a LB stickiness policy.", responseObject = SuccessResponse.class, since="3.0.0") public class DeleteLBStickinessPolicyCmd extends BaseAsyncCmd { @@ -64,7 +65,7 @@ public class DeleteLBStickinessPolicyCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -84,7 +85,7 @@ public class DeleteLBStickinessPolicyCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("Load balancer stickiness policy Id: " + getId()); + CallContext.current().setEventDetails("Load balancer stickiness policy Id: " + getId()); boolean result = _lbService.deleteLBStickinessPolicy(getId(), true); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java index 0e72d67cb40..5afc3b367ee 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteLoadBalancerRule", description="Deletes a load balancer rule.", responseObject=SuccessResponse.class) public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -85,7 +86,7 @@ public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Load balancer Id: "+getId()); + CallContext.current().setEventDetails("Load balancer Id: "+getId()); boolean result = _firewallService.revokeRelatedFirewallRule(id, true); result = result && _lbService.deleteLoadBalancerRule(id, true); diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java index cf5ea3238b8..1c43d568742 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.response.FirewallRuleResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; @@ -29,11 +30,11 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.LBHealthCheckResponse; import org.apache.cloudstack.api.response.LBStickinessResponse; import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.network.rules.HealthCheckPolicy; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "listLBHealthCheckPolicies", description = "Lists load balancer HealthCheck policies.", responseObject = LBHealthCheckResponse.class, since="4.2.0") public class ListLBHealthCheckPoliciesCmd extends BaseListCmd { diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java index 9456a157f35..f71b721f575 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.LBStickinessResponse; import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.StickinessPolicy; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "listLBStickinessPolicies", description = "Lists LBStickiness policies.", responseObject = LBStickinessResponse.class, since="3.0.0") public class ListLBStickinessPoliciesCmd extends BaseListCmd { @@ -71,7 +72,7 @@ public class ListLBStickinessPoliciesCmd extends BaseListCmd { if (lb != null) { //check permissions - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountService.checkAccess(caller, null, true, lb); List stickinessPolicies = _lbService.searchForLBStickinessPolicies(this); LBStickinessResponse spResponse = _responseGenerator.createLBStickinessPolicyResponse(stickinessPolicies, lb); diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java index 92a05d6c9e6..b7ec4d1d1b9 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/RemoveFromLoadBalancerRuleCmd.java @@ -27,13 +27,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; @APICommand(name = "removeFromLoadBalancerRule", description="Removes a virtual machine or a list of virtual machines from a load balancer rule.", responseObject=SuccessResponse.class) @@ -96,7 +97,7 @@ public class RemoveFromLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Load balancer Id: "+getId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); + CallContext.current().setEventDetails("Load balancer Id: "+getId()+" VmIds: "+StringUtils.join(getVirtualMachineIds(), ",")); boolean result = _lbService.removeFromLoadBalancer(id, virtualMachineIds); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/UpdateLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/UpdateLoadBalancerRuleCmd.java index c2960579977..2fd942704e2 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/UpdateLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/UpdateLoadBalancerRuleCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.LoadBalancerResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.rules.LoadBalancer; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateLoadBalancerRule", description="Updates load balancer", responseObject=LoadBalancerResponse.class) public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { @@ -103,7 +104,7 @@ public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Load balancer Id: "+getId()); + CallContext.current().setEventDetails("Load balancer Id: "+getId()); LoadBalancer result = _lbService.updateLoadBalancerRule(this); if (result != null){ LoadBalancerResponse response = _responseGenerator.createLoadBalancerResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/nat/CreateIpForwardingRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/nat/CreateIpForwardingRuleCmd.java index 354f3e94fd9..39790fa1faf 100644 --- a/api/src/org/apache/cloudstack/api/command/user/nat/CreateIpForwardingRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/nat/CreateIpForwardingRuleCmd.java @@ -29,6 +29,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.IpForwardingRuleResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -39,7 +41,6 @@ import com.cloud.network.IpAddress; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.StaticNatRule; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createIpForwardingRule", description="Creates an ip forwarding rule", responseObject=FirewallRuleResponse.class) public class CreateIpForwardingRuleCmd extends BaseAsyncCreateCmd implements StaticNatRule { @@ -111,13 +112,13 @@ public class CreateIpForwardingRuleCmd extends BaseAsyncCreateCmd implements Sta boolean result = true; FirewallRule rule = null; try { - UserContext.current().setEventDetails("Rule Id: "+ getEntityId()); + CallContext.current().setEventDetails("Rule Id: "+ getEntityId()); if (getOpenFirewall()) { - result = result && _firewallService.applyIngressFirewallRules(ipAddressId, UserContext.current().getCaller()); + result = result && _firewallService.applyIngressFirewallRules(ipAddressId, CallContext.current().getCallingAccount()); } - result = result && _rulesService.applyStaticNatRules(ipAddressId, UserContext.current().getCaller()); + result = result && _rulesService.applyStaticNatRules(ipAddressId, CallContext.current().getCallingAccount()); rule = _entityMgr.findById(FirewallRule.class, getEntityId()); StaticNatRule staticNatRule = _rulesService.buildStaticNatRule(rule, false); IpForwardingRuleResponse fwResponse = _responseGenerator.createIpForwardingRuleResponse(staticNatRule); @@ -157,7 +158,7 @@ public class CreateIpForwardingRuleCmd extends BaseAsyncCreateCmd implements Sta @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/nat/DeleteIpForwardingRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/nat/DeleteIpForwardingRuleCmd.java index f2b0b9b7422..fe41028c4fb 100644 --- a/api/src/org/apache/cloudstack/api/command/user/nat/DeleteIpForwardingRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/nat/DeleteIpForwardingRuleCmd.java @@ -26,12 +26,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.rules.FirewallRule; -import com.cloud.user.UserContext; @APICommand(name = "deleteIpForwardingRule", description="Deletes an ip forwarding rule", responseObject=SuccessResponse.class) public class DeleteIpForwardingRuleCmd extends BaseAsyncCmd { @@ -70,7 +71,7 @@ public class DeleteIpForwardingRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Rule Id: "+id); + CallContext.current().setEventDetails("Rule Id: "+id); boolean result = _firewallService.revokeRelatedFirewallRule(id, true); result = result && _rulesService.revokeStaticNatRule(id, true); diff --git a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java index 3a56fe4642a..02c6cd8db8d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLCmd.java @@ -21,6 +21,7 @@ import java.util.List; import com.cloud.network.vpc.NetworkACL; import com.cloud.network.vpc.NetworkACLItem; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -31,6 +32,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.NetworkACLItemResponse; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -42,7 +45,6 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.vpc.Vpc; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @APICommand(name = "createNetworkACL", description = "Creates a ACL rule in the given network (the network has to belong to VPC)", @@ -171,7 +173,7 @@ public class CreateNetworkACLCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @@ -220,7 +222,7 @@ public class CreateNetworkACLCmd extends BaseAsyncCreateCmd { boolean success = false; NetworkACLItem rule = _networkACLService.getNetworkACLItem(getEntityId()); try { - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); success = _networkACLService.applyNetworkACL(rule.getAclId()); // State is different after the rule is applied, so get new object here diff --git a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLListCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLListCmd.java index 591a3541a53..d587fe557e3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLListCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkACLListCmd.java @@ -22,7 +22,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.NetworkACL; import com.cloud.network.vpc.Vpc; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -31,6 +31,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; @APICommand(name = "createNetworkACLList", description = "Creates a Network ACL for the given VPC", diff --git a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java index 445c4ed37f4..c926d81d3f5 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java @@ -23,6 +23,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.*; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.ConcurrentOperationException; @@ -32,7 +34,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.network.Network; import com.cloud.network.Network.GuestType; import com.cloud.offering.NetworkOffering; -import com.cloud.user.UserContext; @APICommand(name = "createNetwork", description="Creates a network", responseObject=NetworkResponse.class) public class CreateNetworkCmd extends BaseCmd { @@ -274,7 +275,7 @@ public class CreateNetworkCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLCmd.java index d35b22c532a..94bf50ae13d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLCmd.java @@ -18,6 +18,7 @@ package org.apache.cloudstack.api.command.user.network; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.user.Account; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -28,6 +29,8 @@ import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.NetworkACLItemResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.async.AsyncJob; @@ -35,7 +38,6 @@ import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.FirewallRule; -import com.cloud.user.UserContext; @APICommand(name = "deleteNetworkACL", description="Deletes a Network ACL", responseObject=SuccessResponse.class) public class DeleteNetworkACLCmd extends BaseAsyncCmd { @@ -78,13 +80,13 @@ public class DeleteNetworkACLCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Network ACL Item Id: " + id); + CallContext.current().setEventDetails("Network ACL Item Id: " + id); boolean result = _networkACLService.revokeNetworkACLItem(id); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLListCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLListCmd.java index 379b44a0d50..bbfe9084176 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLListCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkACLListCmd.java @@ -24,12 +24,14 @@ import com.cloud.network.rules.FirewallRule; import com.cloud.network.vpc.NetworkACL; import com.cloud.network.vpc.Vpc; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; @APICommand(name = "deleteNetworkACLList", description="Deletes a Network ACL", responseObject=SuccessResponse.class) @@ -73,13 +75,13 @@ public class DeleteNetworkACLListCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Network ACL Id: " + id); + CallContext.current().setEventDetails("Network ACL Id: " + id); boolean result = _networkACLService.deleteNetworkACL(id); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkCmd.java index 954146e0f87..6e1b380448b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/DeleteNetworkCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; -import com.cloud.user.UserContext; @APICommand(name = "deleteNetwork", description="Deletes a network", responseObject=SuccessResponse.class) public class DeleteNetworkCmd extends BaseAsyncCmd{ @@ -66,7 +67,7 @@ public class DeleteNetworkCmd extends BaseAsyncCmd{ @Override public void execute(){ - UserContext.current().setEventDetails("Network Id: " + id); + CallContext.current().setEventDetails("Network Id: " + id); boolean result = _networkService.deleteNetwork(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/network/ReplaceNetworkACLListCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/ReplaceNetworkACLListCmd.java index 67f40d1a942..c92992ce2c2 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/ReplaceNetworkACLListCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/ReplaceNetworkACLListCmd.java @@ -22,12 +22,14 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.NetworkACL; import com.cloud.network.vpc.Vpc; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.NetworkResponse; import org.apache.cloudstack.api.response.PrivateGatewayResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; @APICommand(name = "replaceNetworkACLList", description="Replaces ACL associated with a Network or private gateway", responseObject=SuccessResponse.class) @@ -87,7 +89,7 @@ public class ReplaceNetworkACLListCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @@ -101,7 +103,7 @@ public class ReplaceNetworkACLListCmd extends BaseAsyncCmd { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Network id and private gateway can't be passed at the same time"); } - UserContext.current().setEventDetails("Network ACL Id: " + aclId); + CallContext.current().setEventDetails("Network ACL Id: " + aclId); boolean result = false; if (getPrivateGatewayId() != null) { result = _networkACLService.replaceNetworkACLonPrivateGw(aclId, privateGatewayId); diff --git a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java index 1ea815ab1fb..d7862a1ca27 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java @@ -21,12 +21,14 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.NetworkACLItemResponse; import org.apache.cloudstack.api.response.NetworkACLResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import java.util.ArrayList; @@ -134,7 +136,7 @@ public class UpdateNetworkACLItemCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @@ -158,7 +160,7 @@ public class UpdateNetworkACLItemCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Rule Id: " + getId()); + CallContext.current().setEventDetails("Rule Id: " + getId()); NetworkACLItem aclItem = _networkACLService.updateNetworkACLItem(getId(), getProtocol(), getSourceCidrList(), getTrafficType(), getAction(), getNumber(), getSourcePortStart(), getSourcePortEnd(), getIcmpCode(), getIcmpType()); if (aclItem == null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java index fe381246b28..d024e4b93fb 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.NetworkOfferingResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -33,7 +35,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "updateNetwork", description="Updates a network", responseObject=NetworkResponse.class) public class UpdateNetworkCmd extends BaseAsyncCmd { @@ -129,7 +130,7 @@ public class UpdateNetworkCmd extends BaseAsyncCmd { @Override public void execute() throws InsufficientCapacityException, ConcurrentOperationException{ - User callerUser = _accountService.getActiveUser(UserContext.current().getCallerUserId()); + User callerUser = _accountService.getActiveUser(CallContext.current().getCallingUserId()); Account callerAccount = _accountService.getActiveAccountById(callerUser.getAccountId()); Network network = _networkService.getNetwork(id); if (network == null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/project/ActivateProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/ActivateProjectCmd.java index 95889fe4040..1f49d8c69fa 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/ActivateProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/ActivateProjectCmd.java @@ -23,12 +23,13 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "activateProject", description="Activates a project", responseObject=ProjectResponse.class, since="3.0.0") public class ActivateProjectCmd extends BaseAsyncCmd { @@ -76,7 +77,7 @@ public class ActivateProjectCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Project id: "+ getId()); + CallContext.current().setEventDetails("Project id: "+ getId()); Project project = _projectService.activateProject(getId()); if (project != null) { ProjectResponse response = _responseGenerator.createProjectResponse(project); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java index 7515f0513b5..71c8f26f82a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.projects.Project; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createProject", description = "Creates a project", responseObject = ProjectResponse.class, since = "3.0.0") public class CreateProjectCmd extends BaseAsyncCreateCmd { @@ -65,7 +66,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd { if (accountName != null) { return accountName; } else { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } } @@ -73,7 +74,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd { if (domainId != null) { return domainId; } else { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } } @@ -93,7 +94,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if ((accountName != null && domainId == null) || (domainId != null && accountName == null)) { throw new InvalidParameterValueException("Account name and domain id must be specified together"); @@ -124,7 +125,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd { @Override public void create() throws ResourceAllocationException { - UserContext.current().setEventDetails("Project Name: " + getName()); + CallContext.current().setEventDetails("Project Name: " + getName()); Project project = _projectService.createProject(getName(), getDisplayText(), getAccountName(), getDomainId()); if (project != null) { this.setEntityId(project.getId()); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectCmd.java index 9b61b699665..c3208fb42dc 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "deleteProject", description="Deletes a project", responseObject=SuccessResponse.class, since="3.0.0") public class DeleteProjectCmd extends BaseAsyncCmd { @@ -65,7 +66,7 @@ public class DeleteProjectCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Project Id: " + id); + CallContext.current().setEventDetails("Project Id: " + id); boolean result = _projectService.deleteProject(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectInvitationCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectInvitationCmd.java index 27d1b50ca30..46eb4fd5282 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectInvitationCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/DeleteProjectInvitationCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectInvitationResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteProjectInvitation", description = "Accepts or declines project invitation", responseObject = SuccessResponse.class, since = "3.0.0") public class DeleteProjectInvitationCmd extends BaseAsyncCmd { @@ -66,7 +67,7 @@ public class DeleteProjectInvitationCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("Project invitation id " + id); + CallContext.current().setEventDetails("Project invitation id " + id); boolean result = _projectService.deleteProjectInvitation(id); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/SuspendProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/SuspendProjectCmd.java index e2f4bd6219b..b5e59ce9321 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/SuspendProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/SuspendProjectCmd.java @@ -23,6 +23,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -30,7 +32,6 @@ import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "suspendProject", description="Suspends a project", responseObject=ProjectResponse.class, since="3.0.0") public class SuspendProjectCmd extends BaseAsyncCmd { @@ -66,7 +67,7 @@ public class SuspendProjectCmd extends BaseAsyncCmd { @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException{ - UserContext.current().setEventDetails("Project Id: " + id); + CallContext.current().setEventDetails("Project Id: " + id); Project project = _projectService.suspendProject(id); if (project != null) { ProjectResponse response = _responseGenerator.createProjectResponse(project); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java index e475bc7b8ba..ac7de8d64ed 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectCmd.java @@ -23,13 +23,14 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.projects.Project; -import com.cloud.user.UserContext; @APICommand(name = "updateProject", description="Updates a project", responseObject=ProjectResponse.class, since="3.0.0") public class UpdateProjectCmd extends BaseAsyncCmd { @@ -90,7 +91,7 @@ public class UpdateProjectCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceAllocationException{ - UserContext.current().setEventDetails("Project id: "+ getId()); + CallContext.current().setEventDetails("Project id: "+ getId()); Project project = _projectService.updateProject(getId(), getDisplayText(), getAccountName()); if (project != null) { ProjectResponse response = _responseGenerator.createProjectResponse(project); diff --git a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java index f34814a4335..3ce8890a669 100644 --- a/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/project/UpdateProjectInvitationCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateProjectInvitation", description = "Accepts or declines project invitation", responseObject = SuccessResponse.class, since = "3.0.0") public class UpdateProjectInvitationCmd extends BaseAsyncCmd { @@ -90,7 +91,7 @@ public class UpdateProjectInvitationCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("Project id: " + projectId + "; accountName " + accountName + "; accept " + getAccept()); + CallContext.current().setEventDetails("Project id: " + projectId + "; accountName " + accountName + "; accept " + getAccept()); boolean result = _projectService.updateInvitation(projectId, accountName, token, getAccept()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java index c66cc4637f4..b34dc3e049f 100644 --- a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/AssignToGlobalLoadBalancerRuleCmd.java @@ -24,15 +24,18 @@ import com.cloud.network.rules.LoadBalancer; import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancingRulesService; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import javax.inject.Inject; + import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -146,7 +149,7 @@ public class AssignToGlobalLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Global Load balancer rule Id: "+ getGlobalLoadBalancerRuleId()+ " VmIds: " + CallContext.current().setEventDetails("Global Load balancer rule Id: "+ getGlobalLoadBalancerRuleId()+ " VmIds: " + StringUtils.join(getLoadBalancerRulesIds(), ",")); boolean result = _gslbService.assignToGlobalLoadBalancerRule(this); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/CreateGlobalLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/CreateGlobalLoadBalancerRuleCmd.java index d39e466df1d..57b227deef4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/CreateGlobalLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/CreateGlobalLoadBalancerRuleCmd.java @@ -22,11 +22,13 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancingRulesService; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; import org.apache.cloudstack.api.response.RegionResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import javax.inject.Inject; @@ -129,7 +131,7 @@ public class CreateGlobalLoadBalancerRuleCmd extends BaseAsyncCreateCmd { @Override public void execute() throws ResourceAllocationException, ResourceUnavailableException { - UserContext callerContext = UserContext.current(); + CallContext callerContext = CallContext.current(); GlobalLoadBalancerRule rule = _entityMgr.findById(GlobalLoadBalancerRule.class, getEntityId()); GlobalLoadBalancerResponse response = null; if (rule != null) { @@ -145,7 +147,7 @@ public class CreateGlobalLoadBalancerRuleCmd extends BaseAsyncCreateCmd { GlobalLoadBalancerRule gslbRule = _gslbService.createGlobalLoadBalancerRule(this); this.setEntityId(gslbRule.getId()); this.setEntityUuid(gslbRule.getUuid()); - UserContext.current().setEventDetails("Rule Id: " + getEntityId()); + CallContext.current().setEventDetails("Rule Id: " + getEntityId()); } catch (Exception ex) { s_logger.warn("Exception: ", ex); throw new ServerApiException(ApiErrorCode.PARAM_ERROR, ex.getMessage()); @@ -174,7 +176,7 @@ public class CreateGlobalLoadBalancerRuleCmd extends BaseAsyncCreateCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, null, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; } diff --git a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/DeleteGlobalLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/DeleteGlobalLoadBalancerRuleCmd.java index 35401e8a847..66086606f6a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/DeleteGlobalLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/DeleteGlobalLoadBalancerRuleCmd.java @@ -21,10 +21,12 @@ import com.cloud.event.EventTypes; import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancingRulesService; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import javax.inject.Inject; @@ -86,7 +88,7 @@ public class DeleteGlobalLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Deleting global Load balancer rule Id: " + getGlobalLoadBalancerId()); + CallContext.current().setEventDetails("Deleting global Load balancer rule Id: " + getGlobalLoadBalancerId()); boolean result = _gslbService.deleteGlobalLoadBalancerRule(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java index fa051af54cb..ff71f67bf40 100644 --- a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/RemoveFromGlobalLoadBalancerRuleCmd.java @@ -22,15 +22,18 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancingRulesService; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.FirewallRuleResponse; import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import javax.inject.Inject; + import java.util.List; @APICommand(name = "removeFromGlobalLoadBalancerRule", description="Removes a load balancer rule association with" + @@ -98,7 +101,7 @@ public class RemoveFromGlobalLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Global Load balancer rule Id: "+ getGlobalLoadBalancerRuleId()+ " VmIds: " + CallContext.current().setEventDetails("Global Load balancer rule Id: "+ getGlobalLoadBalancerRuleId()+ " VmIds: " + StringUtils.join(getLoadBalancerRulesIds(), ",")); boolean result = _gslbService.removeFromGlobalLoadBalancerRule(this); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/UpdateGlobalLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/UpdateGlobalLoadBalancerRuleCmd.java index 66718863ab2..6d76413773d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/UpdateGlobalLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/region/ha/gslb/UpdateGlobalLoadBalancerRuleCmd.java @@ -99,7 +99,7 @@ public class UpdateGlobalLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public void execute() { - com.cloud.user.UserContext.current().setEventDetails("Global Load balancer Id: "+getId()); + org.apache.cloudstack.context.CallContext.current().setEventDetails("Global Load balancer Id: "+getId()); GlobalLoadBalancerRule gslbRule = _gslbService.updateGlobalLoadBalancerRule(this); if (gslbRule != null) { GlobalLoadBalancerResponse response = _responseGenerator.createGlobalLoadBalancerResponse(gslbRule); diff --git a/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceCountCmd.java b/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceCountCmd.java index 0f4c932827d..9c726d13912 100644 --- a/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceCountCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceCountCmd.java @@ -29,11 +29,12 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.ResourceCountResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.configuration.ResourceCount; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateResourceCount", description="Recalculate and update resource count for an account or domain.", responseObject=ResourceCountResponse.class) public class UpdateResourceCountCmd extends BaseCmd { @@ -99,7 +100,7 @@ public class UpdateResourceCountCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); diff --git a/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceLimitCmd.java b/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceLimitCmd.java index 826596c4c45..4a5b345b482 100644 --- a/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceLimitCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/resource/UpdateResourceLimitCmd.java @@ -25,10 +25,11 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.ResourceLimitResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.configuration.ResourceLimit; -import com.cloud.user.UserContext; @APICommand(name = "updateResourceLimit", description="Updates resource limits for an account or domain.", responseObject=ResourceLimitResponse.class) public class UpdateResourceLimitCmd extends BaseCmd { @@ -96,7 +97,7 @@ public class UpdateResourceLimitCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java b/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java index 321a5f631aa..cac961437df 100644 --- a/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupEgressCmd.java @@ -33,12 +33,13 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectAccountResponse; import org.apache.cloudstack.api.response.SecurityGroupResponse; import org.apache.cloudstack.api.response.SecurityGroupRuleResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.security.SecurityRule; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; @APICommand(name = "authorizeSecurityGroupEgress", responseObject = SecurityGroupRuleResponse.class, description = "Authorizes a particular egress rule for this security group", since="3.0.0") @@ -164,7 +165,7 @@ public class AuthorizeSecurityGroupEgressCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java b/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java index 9ab0fb5c119..3dfcd059972 100644 --- a/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/securitygroup/AuthorizeSecurityGroupIngressCmd.java @@ -33,12 +33,13 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectAccountResponse; import org.apache.cloudstack.api.response.SecurityGroupResponse; import org.apache.cloudstack.api.response.SecurityGroupRuleResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.security.SecurityRule; -import com.cloud.user.UserContext; import com.cloud.utils.StringUtils; import com.cloud.utils.net.NetUtils; @@ -165,7 +166,7 @@ public class AuthorizeSecurityGroupIngressCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/securitygroup/CreateSecurityGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/securitygroup/CreateSecurityGroupCmd.java index 839afb2c220..52611b803cc 100644 --- a/api/src/org/apache/cloudstack/api/command/user/securitygroup/CreateSecurityGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/securitygroup/CreateSecurityGroupCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectAccountResponse; import org.apache.cloudstack.api.response.SecurityGroupResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.network.security.SecurityGroup; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createSecurityGroup", responseObject = SecurityGroupResponse.class, description = "Creates a security group") public class CreateSecurityGroupCmd extends BaseCmd { @@ -91,7 +92,7 @@ public class CreateSecurityGroupCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); diff --git a/api/src/org/apache/cloudstack/api/command/user/securitygroup/DeleteSecurityGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/securitygroup/DeleteSecurityGroupCmd.java index aa6ec2d384f..7e9b9de0789 100644 --- a/api/src/org/apache/cloudstack/api/command/user/securitygroup/DeleteSecurityGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/securitygroup/DeleteSecurityGroupCmd.java @@ -26,11 +26,12 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectAccountResponse; import org.apache.cloudstack.api.response.SecurityGroupResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceInUseException; -import com.cloud.user.UserContext; @APICommand(name = "deleteSecurityGroup", description="Deletes security group", responseObject=SuccessResponse.class) public class DeleteSecurityGroupCmd extends BaseCmd { @@ -107,7 +108,7 @@ public class DeleteSecurityGroupCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotCmd.java index f5cb9003268..9fe5ffe1956 100644 --- a/api/src/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/snapshot/CreateSnapshotCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.SnapshotPolicyResponse; import org.apache.cloudstack.api.response.SnapshotResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -38,7 +40,6 @@ import com.cloud.projects.Project; import com.cloud.storage.Snapshot; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "createSnapshot", description = "Creates an instant snapshot of a volume.", responseObject = SnapshotResponse.class) public class CreateSnapshotCmd extends BaseAsyncCreateCmd { @@ -164,7 +165,7 @@ public class CreateSnapshotCmd extends BaseAsyncCreateCmd { @Override public void execute() { s_logger.info("VOLSS: createSnapshotCmd starts:" + System.currentTimeMillis()); - UserContext.current().setEventDetails("Volume Id: "+getVolumeId()); + CallContext.current().setEventDetails("Volume Id: "+getVolumeId()); Snapshot snapshot; try { snapshot = _volumeService.takeSnapshot(this.getVolumeId(), this.getPolicyId(), this.getEntityId(), _accountService.getAccount(getEntityOwnerId())); diff --git a/api/src/org/apache/cloudstack/api/command/user/snapshot/DeleteSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/snapshot/DeleteSnapshotCmd.java index 6c26e81ce17..7892261f50a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/snapshot/DeleteSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/snapshot/DeleteSnapshotCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SnapshotResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteSnapshot", description="Deletes a snapshot of a disk volume.", responseObject=SuccessResponse.class) public class DeleteSnapshotCmd extends BaseAsyncCmd { @@ -92,7 +93,7 @@ public class DeleteSnapshotCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Snapshot Id: "+getId()); + CallContext.current().setEventDetails("Snapshot Id: "+getId()); boolean result = _snapshotService.deleteSnapshot(getId()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/ssh/CreateSSHKeyPairCmd.java b/api/src/org/apache/cloudstack/api/command/user/ssh/CreateSSHKeyPairCmd.java index 56bec7eacd7..6f1a081da12 100644 --- a/api/src/org/apache/cloudstack/api/command/user/ssh/CreateSSHKeyPairCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/ssh/CreateSSHKeyPairCmd.java @@ -23,10 +23,11 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SSHKeyPairResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.user.SSHKeyPair; -import com.cloud.user.UserContext; @APICommand(name = "createSSHKeyPair", description="Create a new keypair and returns the private key", responseObject=SSHKeyPairResponse.class) public class CreateSSHKeyPairCmd extends BaseCmd { @@ -81,7 +82,7 @@ public class CreateSSHKeyPairCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/ssh/DeleteSSHKeyPairCmd.java b/api/src/org/apache/cloudstack/api/command/user/ssh/DeleteSSHKeyPairCmd.java index b05a675af62..eb2d2379604 100644 --- a/api/src/org/apache/cloudstack/api/command/user/ssh/DeleteSSHKeyPairCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/ssh/DeleteSSHKeyPairCmd.java @@ -23,10 +23,11 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteSSHKeyPair", description="Deletes a keypair by name", responseObject=SuccessResponse.class) public class DeleteSSHKeyPairCmd extends BaseCmd { @@ -90,7 +91,7 @@ public class DeleteSSHKeyPairCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if ((account == null) || isAdmin(account.getType())) { if ((domainId != null) && (accountName != null)) { Account userAccount = _responseGenerator.findAccountByNameDomain(accountName, domainId); diff --git a/api/src/org/apache/cloudstack/api/command/user/ssh/RegisterSSHKeyPairCmd.java b/api/src/org/apache/cloudstack/api/command/user/ssh/RegisterSSHKeyPairCmd.java index b05c6b18c75..8530375d995 100644 --- a/api/src/org/apache/cloudstack/api/command/user/ssh/RegisterSSHKeyPairCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/ssh/RegisterSSHKeyPairCmd.java @@ -23,10 +23,11 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SSHKeyPairResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.user.SSHKeyPair; -import com.cloud.user.UserContext; @APICommand(name = "registerSSHKeyPair", description="Register a public key in a keypair under a certain name", responseObject=SSHKeyPairResponse.class) public class RegisterSSHKeyPairCmd extends BaseCmd { @@ -87,7 +88,7 @@ public class RegisterSSHKeyPairCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/template/CopyTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/CopyTemplateCmd.java index 4921b5ee823..a25bd65f9c2 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/CopyTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/CopyTemplateCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -35,7 +37,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.StorageUnavailableException; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "copyTemplate", description="Copies a template from one zone to another.", responseObject=TemplateResponse.class) public class CopyTemplateCmd extends BaseAsyncCmd { @@ -120,7 +121,7 @@ public class CopyTemplateCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceAllocationException{ try { - UserContext.current().setEventDetails(getEventDescription()); + CallContext.current().setEventDetails(getEventDescription()); VirtualMachineTemplate template = _templateService.copyTemplate(this); if (template != null){ diff --git a/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java index 07aeb0af405..271357d1ef3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java @@ -25,7 +25,7 @@ import com.cloud.storage.Snapshot; import com.cloud.storage.Volume; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; @@ -38,6 +38,8 @@ import org.apache.cloudstack.api.response.SnapshotResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import java.util.Collection; @@ -251,7 +253,7 @@ import java.util.Map; @Override public void execute() { - UserContext.current().setEventDetails("Template Id: "+getEntityId()+((getSnapshotId() == null) ? " from volume Id: " + getVolumeId() : " from snapshot Id: " + getSnapshotId())); + CallContext.current().setEventDetails("Template Id: "+getEntityId()+((getSnapshotId() == null) ? " from volume Id: " + getVolumeId() : " from snapshot Id: " + getSnapshotId())); VirtualMachineTemplate template = null; template = this._templateService.createPrivateTemplate(this); diff --git a/api/src/org/apache/cloudstack/api/command/user/template/DeleteTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/DeleteTemplateCmd.java index b2be2f2278b..bfaff99f3f8 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/DeleteTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/DeleteTemplateCmd.java @@ -26,13 +26,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteTemplate", responseObject=SuccessResponse.class, description="Deletes a template from the system. All virtual machines using the deleted template will not be affected.") public class DeleteTemplateCmd extends BaseAsyncCmd { @@ -108,7 +108,7 @@ public class DeleteTemplateCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Template Id: "+getId()); + CallContext.current().setEventDetails("Template Id: "+getId()); boolean result = _templateService.deleteTemplate(this); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/template/ExtractTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/ExtractTemplateCmd.java index 595ba96089e..0f1b3c6834e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/ExtractTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/ExtractTemplateCmd.java @@ -26,6 +26,7 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ExtractResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.log4j.Logger; @@ -33,7 +34,6 @@ import com.cloud.event.EventTypes; import com.cloud.exception.InternalErrorException; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; @APICommand(name = "extractTemplate", description="Extracts a template", responseObject=ExtractResponse.class) @@ -125,7 +125,7 @@ public class ExtractTemplateCmd extends BaseAsyncCmd { @Override public void execute(){ try { - UserContext.current().setEventDetails(getEventDescription()); + CallContext.current().setEventDetails(getEventDescription()); String uploadUrl = _templateService.extract(this); if (uploadUrl != null) { ExtractResponse response = _responseGenerator.createExtractResponse(id, zoneId, getEntityOwnerId(), mode, uploadUrl); diff --git a/api/src/org/apache/cloudstack/api/command/user/template/ListTemplatesCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/ListTemplatesCmd.java index 08a35d4998f..4b349092125 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/ListTemplatesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/ListTemplatesCmd.java @@ -29,11 +29,12 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.template.VirtualMachineTemplate.TemplateFilter; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; @APICommand(name = "listTemplates", description="List all public, private, and privileged templates.", responseObject=TemplateResponse.class) @@ -95,7 +96,7 @@ public class ListTemplatesCmd extends BaseListTaggedResourcesCmd { public boolean listInReadyState() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); // It is account specific if account is admin type and domainId and accountName are not null boolean isAccountSpecific = (account == null || isAdmin(account.getType())) && (getAccountName() != null) && (getDomainId() != null); // Show only those that are downloaded. diff --git a/api/src/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java b/api/src/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java index b26d9203200..bba90bf2c2a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java @@ -34,11 +34,12 @@ import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.ResourceAllocationException; import com.cloud.template.VirtualMachineTemplate; -import com.cloud.user.UserContext; @APICommand(name = "registerTemplate", description="Registers an existing template into the CloudStack cloud. ", responseObject=TemplateResponse.class) public class RegisterTemplateCmd extends BaseCmd { @@ -232,7 +233,7 @@ public class RegisterTemplateCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/AddIpToVmNicCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/AddIpToVmNicCmd.java index 41584d20bea..b5e223993de 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/AddIpToVmNicCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/AddIpToVmNicCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.user.vm; import com.cloud.vm.NicSecondaryIp; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; @@ -28,6 +29,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.NicResponse; import org.apache.cloudstack.api.response.NicSecondaryIpResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; @@ -40,7 +42,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; import com.cloud.vm.Nic; @@ -69,11 +70,11 @@ public class AddIpToVmNicCmd extends BaseAsyncCmd { } public String getAccountName() { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } public long getDomainId() { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } private long getZoneId() { @@ -113,7 +114,7 @@ public class AddIpToVmNicCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @@ -145,7 +146,7 @@ public class AddIpToVmNicCmd extends BaseAsyncCmd { public void execute() throws ResourceUnavailableException, ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException { - UserContext.current().setEventDetails("Nic Id: " + getNicId() ); + CallContext.current().setEventDetails("Nic Id: " + getNicId() ); String ip; NicSecondaryIp result; String secondaryIp = null; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/AddNicToVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/AddNicToVMCmd.java index 43340008e16..520e91cf442 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/AddNicToVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/AddNicToVMCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "addNicToVirtualMachine", description="Adds VM to specified network by creating a NIC", responseObject=UserVmResponse.class) @@ -105,7 +106,7 @@ public class AddNicToVMCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: " + getVmId() + " Network Id: " + getNetworkId()); + CallContext.current().setEventDetails("Vm Id: " + getVmId() + " Network Id: " + getNetworkId()); UserVm result = _userVmService.addNicToVirtualMachine(this); ArrayList dc = new ArrayList(); dc.add(VMDetails.valueOf("nics")); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java index 5c8fecd69c8..40ad8e0f63d 100755 --- a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java @@ -44,6 +44,8 @@ import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; @@ -62,7 +64,6 @@ import com.cloud.offering.DiskOffering; import com.cloud.offering.ServiceOffering; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @@ -194,7 +195,7 @@ public class DeployVMCmd extends BaseAsyncCreateCmd { public String getAccountName() { if (accountName == null) { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } return accountName; } @@ -209,7 +210,7 @@ public class DeployVMCmd extends BaseAsyncCreateCmd { public Long getDomainId() { if (domainId == null) { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } return domainId; } @@ -379,7 +380,7 @@ public class DeployVMCmd extends BaseAsyncCreateCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; @@ -416,7 +417,7 @@ public class DeployVMCmd extends BaseAsyncCreateCmd { if (getStartVm()) { try { - UserContext.current().setEventDetails("Vm Id: "+getEntityId()); + CallContext.current().setEventDetails("Vm Id: "+getEntityId()); result = _userVmService.startVirtualMachine(this); } catch (ResourceUnavailableException ex) { s_logger.warn("Exception: ", ex); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java index 4add4ce0c2e..06959c15e75 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "destroyVirtualMachine", description="Destroys a virtual machine. Once destroyed, only the administrator can recover it.", responseObject=UserVmResponse.class) @@ -95,7 +96,7 @@ public class DestroyVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, ConcurrentOperationException{ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); UserVm result; result = _userVmService.destroyVm(this); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java index 2aa6ffd50cd..ad3c230221e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java @@ -31,13 +31,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.NicResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.Nic; import com.cloud.vm.NicSecondaryIp; @@ -67,11 +67,11 @@ public class ListNicsCmd extends BaseListCmd { } public String getAccountName() { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } public long getDomainId() { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } public Long getNicId() { @@ -84,7 +84,7 @@ public class ListNicsCmd extends BaseListCmd { @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java index 794e1b5d3cd..86bcc191ada 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -31,7 +33,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "rebootVirtualMachine", description="Reboots a virtual machine.", responseObject=UserVmResponse.class) @@ -94,7 +95,7 @@ public class RebootVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException{ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); UserVm result; result = _userVmService.rebootVirtualMachine(this); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RemoveIpFromVmNicCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RemoveIpFromVmNicCmd.java index 852f073a566..408f69f3999 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RemoveIpFromVmNicCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RemoveIpFromVmNicCmd.java @@ -27,6 +27,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.NicSecondaryIpResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; @@ -35,7 +36,6 @@ import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.Nic; import com.cloud.vm.NicSecondaryIp; @@ -69,16 +69,16 @@ public class RemoveIpFromVmNicCmd extends BaseAsyncCmd { } public String getAccountName() { - return UserContext.current().getCaller().getAccountName(); + return CallContext.current().getCallingAccount().getAccountName(); } public long getDomainId() { - return UserContext.current().getCaller().getDomainId(); + return CallContext.current().getCallingAccount().getDomainId(); } @Override public long getEntityOwnerId() { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); return caller.getAccountId(); } @@ -131,7 +131,7 @@ public class RemoveIpFromVmNicCmd extends BaseAsyncCmd { @Override public void execute() throws InvalidParameterValueException { - UserContext.current().setEventDetails("Ip Id: " + id); + CallContext.current().setEventDetails("Ip Id: " + id); NicSecondaryIp nicSecIp = getIpEntry(); if (nicSecIp == null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RemoveNicFromVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RemoveNicFromVMCmd.java index b1a870ec8f6..ef133d97170 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RemoveNicFromVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RemoveNicFromVMCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.NicResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "removeNicFromVirtualMachine", description="Removes VM from specified network by deleting a NIC", responseObject=UserVmResponse.class) @@ -99,7 +100,7 @@ public class RemoveNicFromVMCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getVmId() + " Nic Id: " + getNicId()); + CallContext.current().setEventDetails("Vm Id: "+getVmId() + " Nic Id: " + getNicId()); UserVm result = _userVmService.removeNicFromVirtualMachine(this); ArrayList dc = new ArrayList(); dc.add(VMDetails.valueOf("nics")); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java index 271d37fd3f0..c8ab5e88657 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java @@ -24,13 +24,14 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "resetPasswordForVirtualMachine", responseObject=UserVmResponse.class, description="Resets the password for virtual machine. " + @@ -109,7 +110,7 @@ public class ResetVMPasswordCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException{ password = _mgr.generateRandomPassword(); - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.resetVMPassword(this, password); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse("virtualmachine", result).get(0); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java index 372f2bc8b76..fa063447336 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java @@ -30,9 +30,9 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.event.EventTypes; import com.cloud.exception.InsufficientCapacityException; @@ -137,7 +137,7 @@ public class ResetVMSSHKeyCmd extends BaseAsyncCmd { public void execute() throws ResourceUnavailableException, InsufficientCapacityException { - UserContext.current().setEventDetails("Vm Id: " + getId()); + CallContext.current().setEventDetails("Vm Id: " + getId()); UserVm result = _userVmService.resetVMSSHKey(this); if (result != null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java index 2f7d8e10a77..2cfcc97402d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java @@ -24,6 +24,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -32,7 +34,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "restoreVirtualMachine", description="Restore a VM to original template/ISO or new template/ISO", responseObject=UserVmResponse.class, since="3.0.0") @@ -62,7 +63,7 @@ public class RestoreVMCmd extends BaseAsyncCmd { public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException { UserVm result; - UserContext.current().setEventDetails("Vm Id: " + getVmId()); + CallContext.current().setEventDetails("Vm Id: " + getVmId()); result = _userVmService.restoreVM(this); if (result != null) { UserVmResponse response = _responseGenerator.createUserVmResponse("virtualmachine", result).get(0); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java index 758d9c1667b..ac044197987 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java @@ -19,12 +19,14 @@ package org.apache.cloudstack.api.command.user.vm; import com.cloud.event.EventTypes; import com.cloud.exception.*; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import java.util.List; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java index 2fc66467a08..8441ac670e5 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -35,7 +37,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.StorageUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.utils.exception.ExecutionException; @@ -114,7 +115,7 @@ public class StartVMCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, ResourceAllocationException { try { - UserContext.current().setEventDetails("Vm Id: " + getId()); + CallContext.current().setEventDetails("Vm Id: " + getId()); UserVm result ; result = _userVmService.startVirtualMachine(this); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java index f06b0f54432..90d565df3f0 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "stopVirtualMachine", responseObject = UserVmResponse.class, description = "Stops a virtual machine.") @@ -111,7 +112,7 @@ public class StopVMCmd extends BaseAsyncCmd { @Override public void execute() throws ServerApiException, ConcurrentOperationException { - UserContext.current().setEventDetails("Vm Id: " + getId()); + CallContext.current().setEventDetails("Vm Id: " + getId()); UserVm result; result = _userVmService.stopVirtualMachine(getId(), isForced()); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateDefaultNicForVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateDefaultNicForVMCmd.java index 07518c90928..57ec9fb6729 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateDefaultNicForVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateDefaultNicForVMCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.NicResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "updateDefaultNicForVirtualMachine", description="Changes the default NIC on a VM", responseObject=UserVmResponse.class) @@ -99,7 +100,7 @@ public class UpdateDefaultNicForVMCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Vm Id: "+getVmId() + " Nic Id: " + getNicId()); + CallContext.current().setEventDetails("Vm Id: "+getVmId() + " Nic Id: " + getNicId()); UserVm result = _userVmService.updateDefaultNicForVirtualMachine(this); ArrayList dc = new ArrayList(); dc.add(VMDetails.valueOf("nics")); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java index 26e5609f35c..ba466b05a04 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.GuestOSResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @@ -133,7 +134,7 @@ public class UpdateVMCmd extends BaseCmd{ @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException { - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); UserVm result = _userVmService.updateVirtualMachine(this); if (result != null){ UserVmResponse response = _responseGenerator.createUserVmResponse("virtualmachine", result).get(0); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java index fb620001be2..671a61bb7ce 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java @@ -24,13 +24,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.offering.ServiceOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "changeServiceForVirtualMachine", responseObject=UserVmResponse.class, description="Changes the service offering for a virtual machine. " + @@ -89,7 +90,7 @@ public class UpgradeVMCmd extends BaseCmd { @Override public void execute() throws ResourceAllocationException{ - UserContext.current().setEventDetails("Vm Id: "+getId()); + CallContext.current().setEventDetails("Vm Id: "+getId()); ServiceOffering serviceOffering = _configService.getServiceOffering(serviceOfferingId); if (serviceOffering == null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/vmgroup/CreateVMGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/vmgroup/CreateVMGroupCmd.java index bcb7bdaebbd..daaf0947d31 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vmgroup/CreateVMGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vmgroup/CreateVMGroupCmd.java @@ -25,9 +25,10 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.InstanceGroupResponse; import org.apache.cloudstack.api.response.ProjectAccountResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; -import com.cloud.user.UserContext; import com.cloud.vm.InstanceGroup; @APICommand(name = "createInstanceGroup", description = "Creates a vm group", responseObject = InstanceGroupResponse.class) @@ -88,7 +89,7 @@ public class CreateVMGroupCmd extends BaseCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/CreateVMSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/CreateVMSnapshotCmd.java index aa9feb8e2a3..542215a5e8e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/CreateVMSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/CreateVMSnapshotCmd.java @@ -27,10 +27,10 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VMSnapshotResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.vm.snapshot.VMSnapshot; @@ -96,7 +96,7 @@ public class CreateVMSnapshotCmd extends BaseAsyncCreateCmd { @Override public void execute() { - UserContext.current().setEventDetails("VM Id: " + getVmId()); + CallContext.current().setEventDetails("VM Id: " + getVmId()); VMSnapshot result = _vmSnapshotService.creatVMSnapshot(getVmId(),getEntityId()); if (result != null) { VMSnapshotResponse response = _responseGenerator diff --git a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/DeleteVMSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/DeleteVMSnapshotCmd.java index bda84c893a5..24f84626ea3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/DeleteVMSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/DeleteVMSnapshotCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.VMSnapshotResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.snapshot.VMSnapshot; @APICommand(name="deleteVMSnapshot", description = "Deletes a vmsnapshot.", responseObject = SuccessResponse.class, since="4.2.0") @@ -62,7 +63,7 @@ public class DeleteVMSnapshotCmd extends BaseAsyncCmd { @Override public void execute() { - UserContext.current().setEventDetails("vmsnapshot id: " + getId()); + CallContext.current().setEventDetails("vmsnapshot id: " + getId()); boolean result = _vmSnapshotService.deleteVMSnapshot(getId()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/RevertToVMSnapshotCmd.java b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/RevertToVMSnapshotCmd.java index f6d8b2c4a35..9344406e5c5 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/RevertToVMSnapshotCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vmsnapshot/RevertToVMSnapshotCmd.java @@ -26,6 +26,7 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VMSnapshotResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -33,7 +34,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.vm.snapshot.VMSnapshot; @@ -66,7 +66,7 @@ public class RevertToVMSnapshotCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException, ConcurrentOperationException { - UserContext.current().setEventDetails( + CallContext.current().setEventDetails( "vmsnapshot id: " + getVmSnapShotId()); UserVm result = _vmSnapshotService.revertToSnapshot(getVmSnapShotId()); if (result != null) { diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/AddResourceDetailCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/AddResourceDetailCmd.java index de5832dc8e6..be3eb227901 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/AddResourceDetailCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/AddResourceDetailCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.user.volume; import com.cloud.server.ResourceTag; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; @@ -26,13 +27,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; import java.util.*; diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java index bd729ea9de7..baec44f2d77 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "attachVolume", description="Attaches a disk volume to a virtual machine.", responseObject=VolumeResponse.class) public class AttachVolumeCmd extends BaseAsyncCmd { @@ -118,7 +119,7 @@ public class AttachVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); + CallContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); Volume result = _volumeService.attachVolumeToVM(this); if (result != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java index 6a5d4e556ec..e5c7a51b8d2 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java @@ -29,13 +29,14 @@ import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SnapshotResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.storage.Snapshot; import com.cloud.storage.Volume; -import com.cloud.user.UserContext; @APICommand(name = "createVolume", responseObject=VolumeResponse.class, description="Creates a disk volume from a disk offering. This disk volume must still be attached to a virtual machine to make use of it.") public class CreateVolumeCmd extends BaseAsyncCreateCmd { @@ -155,7 +156,7 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; @@ -185,7 +186,7 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Volume Id: "+getEntityId()+((getSnapshotId() == null) ? "" : " from snapshot: " + getSnapshotId())); + CallContext.current().setEventDetails("Volume Id: "+getEntityId()+((getSnapshotId() == null) ? "" : " from snapshot: " + getSnapshotId())); Volume volume = _volumeService.createVolume(this); if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(volume); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java index 394b0092123..73cc82791d3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java @@ -24,12 +24,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.exception.ConcurrentOperationException; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "deleteVolume", description="Deletes a detached disk volume.", responseObject=SuccessResponse.class) public class DeleteVolumeCmd extends BaseCmd { @@ -79,8 +80,8 @@ public class DeleteVolumeCmd extends BaseCmd { @Override public void execute() throws ConcurrentOperationException { - UserContext.current().setEventDetails("Volume Id: "+getId()); - boolean result = this._volumeService.deleteVolume(id, UserContext.current().getCaller()); + CallContext.current().setEventDetails("Volume Id: "+getId()); + boolean result = this._volumeService.deleteVolume(id, CallContext.current().getCallingAccount()); if (result) { SuccessResponse response = new SuccessResponse(getCommandName()); this.setResponseObject(response); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java index 24dd113bef2..f2fe0cd7e75 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; @APICommand(name = "detachVolume", description="Detaches a disk volume from a virtual machine.", responseObject=VolumeResponse.class) @@ -129,7 +130,7 @@ public class DetachVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); + CallContext.current().setEventDetails("Volume Id: "+getId()+" VmId: "+getVirtualMachineId()); Volume result = _volumeService.detachVolumeFromVM(this); if (result != null){ VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java index 8588153848d..08116fc4e6e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ExtractResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.dc.DataCenter; @@ -35,7 +37,6 @@ import com.cloud.event.EventTypes; import com.cloud.storage.Upload; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "extractVolume", description="Extracts volume", responseObject=ExtractResponse.class) public class ExtractVolumeCmd extends BaseAsyncCmd { @@ -126,7 +127,7 @@ public class ExtractVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Volume Id: " + getId()); + CallContext.current().setEventDetails("Volume Id: " + getId()); String uploadUrl = _volumeService.extractVolume(this); if (uploadUrl != null) { ExtractResponse response = new ExtractResponse(); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/RemoveResourceDetailCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/RemoveResourceDetailCmd.java index 445f4353c74..8be70f348d0 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/RemoveResourceDetailCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/RemoveResourceDetailCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.user.volume; import com.cloud.server.ResourceTag; + import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; @@ -27,12 +28,13 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; import java.util.*; diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java index 0b7ff0d8b03..811440d9b84 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DiskOfferingResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -34,7 +36,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.projects.Project; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name="resizeVolume", description="Resizes a volume", responseObject=VolumeResponse.class) @@ -133,7 +134,7 @@ public class ResizeVolumeCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceAllocationException{ - UserContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); + CallContext.current().setEventDetails("Volume Id: " + getEntityId() + " to size " + getSize() + "G"); Volume volume = _volumeService.resizeVolume(this); if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(volume); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java index f1e68e9372c..ad7c9920ad4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java @@ -25,12 +25,13 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "updateVolume", description="Updates the volume.", responseObject=VolumeResponse.class) public class UpdateVolumeCmd extends BaseAsyncCmd { @@ -99,7 +100,7 @@ public class UpdateVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ - UserContext.current().setEventDetails("Volume Id: "+getId()); + CallContext.current().setEventDetails("Volume Id: "+getId()); Volume result = _volumeService.updateVolume(this); if (result != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/UploadVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/UploadVolumeCmd.java index fea3e04d249..f9104f7afb4 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/UploadVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/UploadVolumeCmd.java @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -36,7 +38,6 @@ import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.storage.Volume; -import com.cloud.user.UserContext; @APICommand(name = "uploadVolume", description="Uploads a data disk.", responseObject=VolumeResponse.class) public class UploadVolumeCmd extends BaseAsyncCmd { @@ -143,7 +144,7 @@ public class UploadVolumeCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateStaticRouteCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateStaticRouteCmd.java index e0cfe000900..91aecef210d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateStaticRouteCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateStaticRouteCmd.java @@ -26,6 +26,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PrivateGatewayResponse; import org.apache.cloudstack.api.response.StaticRouteResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -35,7 +37,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.StaticRoute; import com.cloud.network.vpc.VpcGateway; -import com.cloud.user.UserContext; @APICommand(name = "createStaticRoute", description="Creates a static route", responseObject=StaticRouteResponse.class) public class CreateStaticRouteCmd extends BaseAsyncCreateCmd{ @@ -92,7 +93,7 @@ public class CreateStaticRouteCmd extends BaseAsyncCreateCmd{ boolean success = false; StaticRoute route = _entityMgr.findById(StaticRoute.class, getEntityId()); try { - UserContext.current().setEventDetails("Static route Id: " + getEntityId()); + CallContext.current().setEventDetails("Static route Id: " + getEntityId()); success = _vpcService.applyStaticRoutes(route.getVpcId()); // State is different after the route is applied, so get new object here diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java index 04a77888d9d..78e4363d7d3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.VpcOfferingResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; @@ -35,7 +37,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.Vpc; -import com.cloud.user.UserContext; @APICommand(name = "createVPC", description="Creates a VPC", responseObject=VpcResponse.class) public class CreateVPCCmd extends BaseAsyncCreateCmd{ @@ -179,7 +180,7 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd{ public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/DeleteStaticRouteCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/DeleteStaticRouteCmd.java index 87c1c9d1ef9..502b7a21615 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/DeleteStaticRouteCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/DeleteStaticRouteCmd.java @@ -26,13 +26,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.StaticRouteResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.vpc.StaticRoute; -import com.cloud.user.UserContext; @APICommand(name = "deleteStaticRoute", description="Deletes a static route", responseObject=SuccessResponse.class) public class DeleteStaticRouteCmd extends BaseAsyncCmd{ @@ -92,7 +93,7 @@ public class DeleteStaticRouteCmd extends BaseAsyncCmd{ @Override public void execute() throws ResourceUnavailableException { - UserContext.current().setEventDetails("Route Id: " + id); + CallContext.current().setEventDetails("Route Id: " + id); boolean result = _vpcService.revokeStaticRoute(id); if (result) { diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java index 0618e3467b3..7625b0d24de 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java @@ -25,13 +25,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.VpnUsersResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.domain.Domain; import com.cloud.event.EventTypes; import com.cloud.network.VpnUser; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "addVpnUser", description="Adds vpn users", responseObject=VpnUsersResponse.class) public class AddVpnUserCmd extends BaseAsyncCreateCmd { @@ -97,7 +98,7 @@ public class AddVpnUserCmd extends BaseAsyncCreateCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/CreateVpnCustomerGatewayCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/CreateVpnCustomerGatewayCmd.java index 38b40b54c5f..1602c29304c 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/CreateVpnCustomerGatewayCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/CreateVpnCustomerGatewayCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.Site2SiteCustomerGatewayResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.Site2SiteCustomerGateway; -import com.cloud.user.UserContext; @APICommand(name = "createVpnCustomerGateway", description="Creates site to site vpn customer gateway", responseObject=Site2SiteCustomerGatewayResponse.class) public class CreateVpnCustomerGatewayCmd extends BaseAsyncCmd { @@ -137,7 +138,7 @@ public class CreateVpnCustomerGatewayCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, null, true); if (accountId == null) { - accountId = UserContext.current().getCaller().getId(); + accountId = CallContext.current().getCallingAccount().getId(); } return accountId; } diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/DeleteRemoteAccessVpnCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/DeleteRemoteAccessVpnCmd.java index 06c25305a00..640a89a34c3 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/DeleteRemoteAccessVpnCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/DeleteRemoteAccessVpnCmd.java @@ -23,13 +23,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.IPAddressResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; 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; @APICommand(name = "deleteRemoteAccessVpn", description="Destroys a l2tp/ipsec remote access vpn", responseObject=SuccessResponse.class) public class DeleteRemoteAccessVpnCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class DeleteRemoteAccessVpnCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException { - _ravService.destroyRemoteAccessVpnForIp(publicIpId, UserContext.current().getCaller()); + _ravService.destroyRemoteAccessVpnForIp(publicIpId, CallContext.current().getCallingAccount()); } @Override diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/RemoveVpnUserCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/RemoveVpnUserCmd.java index 9520e80858d..9b3fa702542 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/RemoveVpnUserCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/RemoveVpnUserCmd.java @@ -25,11 +25,12 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ProjectResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "removeVpnUser", description="Removes vpn user", responseObject=SuccessResponse.class) public class RemoveVpnUserCmd extends BaseAsyncCmd { @@ -89,7 +90,7 @@ public class RemoveVpnUserCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, projectId, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return accountId; @@ -108,7 +109,7 @@ public class RemoveVpnUserCmd extends BaseAsyncCmd { @Override public void execute(){ Account owner = _accountService.getAccount(getEntityOwnerId()); - boolean result = _ravService.removeVpnUser(owner.getId(), userName, UserContext.current().getCaller()); + boolean result = _ravService.removeVpnUser(owner.getId(), userName, CallContext.current().getCallingAccount()); if (!result) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to remove vpn user"); } diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/ResetVpnConnectionCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/ResetVpnConnectionCmd.java index d9f38d235d1..6caa5718512 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/ResetVpnConnectionCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/ResetVpnConnectionCmd.java @@ -24,13 +24,14 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.Site2SiteVpnConnectionResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Site2SiteVpnConnection; import com.cloud.user.Account; -import com.cloud.user.UserContext; @APICommand(name = "resetVpnConnection", description="Reset site to site vpn connection", responseObject=Site2SiteVpnConnectionResponse.class) public class ResetVpnConnectionCmd extends BaseAsyncCmd { @@ -84,7 +85,7 @@ public class ResetVpnConnectionCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, null, true); if (accountId == null) { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } return Account.ACCOUNT_ID_SYSTEM; } diff --git a/api/src/org/apache/cloudstack/api/command/user/vpn/UpdateVpnCustomerGatewayCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpn/UpdateVpnCustomerGatewayCmd.java index 3aca5cd4758..72ecf8f4eb5 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpn/UpdateVpnCustomerGatewayCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpn/UpdateVpnCustomerGatewayCmd.java @@ -24,11 +24,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.Site2SiteCustomerGatewayResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.Site2SiteCustomerGateway; -import com.cloud.user.UserContext; @APICommand(name = "updateVpnCustomerGateway", description="Update site to site vpn customer gateway", responseObject=Site2SiteCustomerGatewayResponse.class) public class UpdateVpnCustomerGatewayCmd extends BaseAsyncCmd { @@ -136,7 +137,7 @@ public class UpdateVpnCustomerGatewayCmd extends BaseAsyncCmd { public long getEntityOwnerId() { Long accountId = finalyzeAccountId(accountName, domainId, null, true); if (accountId == null) { - accountId = UserContext.current().getCaller().getId(); + accountId = CallContext.current().getCallingAccount().getId(); } return accountId; } diff --git a/api/src/org/apache/cloudstack/context/CallContext.java b/api/src/org/apache/cloudstack/context/CallContext.java new file mode 100644 index 00000000000..c98908a6310 --- /dev/null +++ b/api/src/org/apache/cloudstack/context/CallContext.java @@ -0,0 +1,218 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package org.apache.cloudstack.context; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.apache.log4j.Logger; +import org.apache.log4j.NDC; + +import com.cloud.dao.EntityManager; +import com.cloud.exception.CloudAuthenticationException; +import com.cloud.user.Account; +import com.cloud.user.User; +import com.cloud.utils.UuidUtils; +import com.cloud.utils.exception.CloudRuntimeException; + +/** + * CallContext records information about the environment the call is made. This + * class must be always be available in all CloudStack code. Every thread + * entry point must set the context and remove it when the thread finishes. + */ +public class CallContext { + private static final Logger s_logger = Logger.getLogger(CallContext.class); + private static ThreadLocal s_currentContext = new ThreadLocal(); + + private String contextId; + private Account account; + private long startEventId = 0; + private String eventDetails; + private User user; + private final Map context = new HashMap(); + + private static EntityManager s_entityMgr; + + public static void init(EntityManager entityMgr) { + s_entityMgr = entityMgr; + } + + protected CallContext() { + } + + protected CallContext(User user, Account account, String contextId) { + this.user = user; + this.account = account; + this.contextId = contextId; + } + + public void putContextParameter(Object key, Object value) { + context.put(key, value); + } + + public Object getContextParameter(Object key) { + return context.get(key); + } + + public long getCallingUserId() { + return user.getId(); + } + + public User getCallingUser() { + return user; + } + + public String getContextId() { + return contextId; + } + + public Account getCallingAccount() { + return account; + } + + public static CallContext current() { + return s_currentContext.get(); + } + + /** + * This method should only be called if you can propagate the context id + * from another CallContext. + * + * @param callingUser calling user + * @param callingAccount calling account + * @param contextId context id propagated from another call context + * @return CallContext + */ + public static CallContext register(User callingUser, Account callingAccount, String contextId) { + /* + Unit tests will have multiple times of setup/tear-down call to this, remove assertions to all unit test to run + + assert s_currentContext.get() == null : "There's a context already so what does this new register context mean? " + s_currentContext.get().toString(); + if (s_currentContext.get() != null) { // FIXME: This should be removed soon. I added this check only to surface all the places that have this problem. + throw new CloudRuntimeException("There's a context already so what does this new register context mean? " + s_currentContext.get().toString()); + } + */ + CallContext callingContext = new CallContext(callingUser, callingAccount, contextId); + s_currentContext.set(callingContext); + NDC.push("ctx-" + UuidUtils.first(contextId)); + s_logger.debug("Setting calling context: " + callingContext); + return callingContext; + } + + public static CallContext register(User callingUser, Account callingAccount) { + return register(callingUser, callingAccount, UUID.randomUUID().toString()); + } + + public static CallContext registerSystemCallContextOnceOnly() { + try { + CallContext context = s_currentContext.get(); + if (context == null) { + return register(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM); + } + assert context.getCallingUserId() == User.UID_SYSTEM : "You are calling a very specific method that registers a one time system context. This method is meant for background threads that does processing."; + return context; + } catch (Exception e) { + s_logger.fatal("Exiting the system because we're unable to register the system call context.", e); + System.exit(1); + throw new CloudRuntimeException("Should never hit this"); + } + } + + public static CallContext register(String callingUserUuid, String callingAccountUuid) { + Account account = s_entityMgr.findByUuid(Account.class, callingAccountUuid); + if (account == null) { + throw new CloudAuthenticationException("The account is no longer current.").add(Account.class, callingAccountUuid); + } + + User user = s_entityMgr.findByUuid(User.class, callingUserUuid); + if (user == null) { + throw new CloudAuthenticationException("The user is no longer current.").add(User.class, callingUserUuid); + } + return register(user, account); + } + + public static CallContext register(long callingUserId, long callingAccountId) throws CloudAuthenticationException { + Account account = s_entityMgr.findById(Account.class, callingAccountId); + if (account == null) { + throw new CloudAuthenticationException("The account is no longer current.").add(Account.class, Long.toString(callingAccountId)); + } + User user = s_entityMgr.findById(User.class, callingUserId); + if (user == null) { + throw new CloudAuthenticationException("The user is no longer current.").add(User.class, Long.toString(callingUserId)); + } + return register(user, account); + } + + public static CallContext unregister() { + CallContext context = s_currentContext.get(); + if (context == null) { + s_logger.trace("No context to remove"); + return null; + } + s_currentContext.remove(); + s_logger.debug("Context removed " + context); + String contextId = context.getContextId(); + String sessionIdOnStack = null; + String sessionIdPushedToNDC = "ctx-" + UuidUtils.first(contextId); + while ((sessionIdOnStack = NDC.pop()) != null) { + if (sessionIdPushedToNDC.equals(sessionIdOnStack)) { + break; + } + if (s_logger.isTraceEnabled()) { + s_logger.trace("Popping from NDC: " + contextId); + } + } + return context; + } + + public void setStartEventId(long startEventId) { + this.startEventId = startEventId; + } + + public long getStartEventId() { + return startEventId; + } + + public long getCallingAccountId() { + return account.getId(); + } + + public String getCallingAccountUuid() { + return account.getUuid(); + } + + public String getCallingUserUuid() { + return user.getUuid(); + } + + public void setEventDetails(String eventDetails) { + this.eventDetails = eventDetails; + } + + public String getEventDetails() { + return eventDetails; + } + + @Override + public String toString() { + return new StringBuffer("CallContext[acct=").append(account.getId()) + .append("; user=").append(user.getId()) + .append("; session=").append(contextId) + .append("]").toString(); + } +} diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in index c717b560a1c..0f3d328cf78 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -832,7 +832,6 @@ - diff --git a/plugins/api/discovery/src/org/apache/cloudstack/api/command/user/discovery/ListApisCmd.java b/plugins/api/discovery/src/org/apache/cloudstack/api/command/user/discovery/ListApisCmd.java index 5de04f01e11..5b6d7ce7f68 100644 --- a/plugins/api/discovery/src/org/apache/cloudstack/api/command/user/discovery/ListApisCmd.java +++ b/plugins/api/discovery/src/org/apache/cloudstack/api/command/user/discovery/ListApisCmd.java @@ -26,11 +26,12 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ApiDiscoveryResponse; import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.discovery.ApiDiscoveryService; + import org.apache.log4j.Logger; import com.cloud.user.User; -import com.cloud.user.UserContext; @APICommand(name = "listApis", responseObject = ApiDiscoveryResponse.class, description = "lists all available apis on the server, provided by the Api Discovery plugin", since = "4.1.0") public class ListApisCmd extends BaseCmd { @@ -47,7 +48,7 @@ public class ListApisCmd extends BaseCmd { @Override public void execute() throws ServerApiException { if (_apiDiscoveryService != null) { - User user = UserContext.current().getCallerUser(); + User user = CallContext.current().getCallingUser(); ListResponse response = (ListResponse) _apiDiscoveryService.listApis(user, name); if (response == null) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Api Discovery plugin was unable to find an api by that name or process any apis"); diff --git a/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/admin/ratelimit/ResetApiLimitCmd.java b/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/admin/ratelimit/ResetApiLimitCmd.java index 7ec53163c91..0fdf391e05a 100644 --- a/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/admin/ratelimit/ResetApiLimitCmd.java +++ b/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/admin/ratelimit/ResetApiLimitCmd.java @@ -26,13 +26,14 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.ApiLimitResponse; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.ratelimit.ApiRateLimitService; + import org.apache.log4j.Logger; import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.user.Account; -import com.cloud.user.UserContext; import javax.inject.Inject; @@ -84,7 +85,7 @@ public class ResetApiLimitCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } diff --git a/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/user/ratelimit/GetApiLimitCmd.java b/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/user/ratelimit/GetApiLimitCmd.java index ba92e8b60c8..6add147e694 100644 --- a/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/user/ratelimit/GetApiLimitCmd.java +++ b/plugins/api/rate-limit/src/org/apache/cloudstack/api/command/user/ratelimit/GetApiLimitCmd.java @@ -31,10 +31,12 @@ import org.apache.cloudstack.api.command.admin.ratelimit.ResetApiLimitCmd; import org.apache.cloudstack.api.response.AccountResponse; import org.apache.cloudstack.api.response.ApiLimitResponse; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.ratelimit.ApiRateLimitService; import com.cloud.configuration.Config; @@ -45,7 +47,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; import javax.inject.Inject; @@ -73,7 +74,7 @@ public class GetApiLimitCmd extends BaseCmd { @Override public long getEntityOwnerId() { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account != null) { return account.getId(); } @@ -87,7 +88,7 @@ public class GetApiLimitCmd extends BaseCmd { if ( !apiLimitEnabled ){ throw new ServerApiException(ApiErrorCode.UNSUPPORTED_ACTION_ERROR, "This api is only available when api.throttling.enabled = true."); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); ApiLimitResponse response = _apiLimitService.searchApiLimit(caller); response.setResponseName(getCommandName()); response.setObjectName("apilimit"); diff --git a/plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/DedicatedResourceManagerImpl.java b/plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/DedicatedResourceManagerImpl.java index c321b22176e..15d553e9722 100755 --- a/plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/DedicatedResourceManagerImpl.java +++ b/plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/DedicatedResourceManagerImpl.java @@ -25,6 +25,7 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import com.cloud.utils.component.AdapterBase; + import org.apache.cloudstack.api.commands.DedicateClusterCmd; import org.apache.cloudstack.api.commands.DedicateHostCmd; import org.apache.cloudstack.api.commands.DedicatePodCmd; @@ -41,6 +42,8 @@ import org.apache.cloudstack.api.response.DedicateClusterResponse; import org.apache.cloudstack.api.response.DedicateHostResponse; import org.apache.cloudstack.api.response.DedicatePodResponse; import org.apache.cloudstack.api.response.DedicateZoneResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -66,7 +69,6 @@ import com.cloud.host.dao.HostDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; @@ -107,7 +109,7 @@ public class DedicatedResourceManagerImpl implements DedicatedService { Long accountId = null; List hosts = null; if(accountName != null){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, null); accountId = owner.getId(); } @@ -236,7 +238,7 @@ public class DedicatedResourceManagerImpl implements DedicatedService { public List dedicatePod(Long podId, Long domainId, String accountName) { Long accountId = null; if(accountName != null){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, null); accountId = owner.getId(); } @@ -354,7 +356,7 @@ public class DedicatedResourceManagerImpl implements DedicatedService { Long accountId = null; List hosts = null; if(accountName != null){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, null); accountId = owner.getId(); } @@ -456,7 +458,7 @@ public class DedicatedResourceManagerImpl implements DedicatedService { public List dedicateHost(Long hostId, Long domainId, String accountName) { Long accountId = null; if(accountName != null){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, null); accountId = owner.getId(); } diff --git a/plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/manager/DedicatedApiUnitTest.java b/plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/manager/DedicatedApiUnitTest.java index 58aae238d88..72890f2c821 100644 --- a/plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/manager/DedicatedApiUnitTest.java +++ b/plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/manager/DedicatedApiUnitTest.java @@ -22,17 +22,15 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.when; import java.io.IOException; +import java.util.UUID; import javax.inject.Inject; -import javax.naming.ConfigurationException; import junit.framework.Assert; -import org.apache.cloudstack.dedicated.DedicatedResourceManagerImpl; -import org.apache.cloudstack.test.utils.SpringUtils; import org.apache.log4j.Logger; +import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -48,6 +46,10 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.dedicated.DedicatedResourceManagerImpl; +import org.apache.cloudstack.test.utils.SpringUtils; + import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.dc.DedicatedResourceVO; import com.cloud.dc.dao.ClusterDao; @@ -61,7 +63,7 @@ import com.cloud.host.dao.HostDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.exception.CloudRuntimeException; @@ -108,24 +110,26 @@ public class DedicatedApiUnitTest { private static long accountId = 5L; private static String accountName = "admin"; - @BeforeClass - public static void setUp() throws ConfigurationException { - - } - @Before - public void testSetUp() { + public void setUp() { ComponentContext.initComponentsLifeCycle(); AccountVO account = new AccountVO(accountName, domainId, "networkDomain", Account.ACCOUNT_TYPE_NORMAL, "uuid"); DomainVO domain = new DomainVO("rootDomain", 5L, 5L, "networkDomain"); - UserContext.registerContext(1, account, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); when(_acctMgr.finalizeOwner((Account) anyObject(), anyString(), anyLong(), anyLong())).thenReturn(account); when(_accountDao.findByIdIncludingRemoved(0L)).thenReturn(account); when(_accountDao.findById(anyLong())).thenReturn(account); when(_domainDao.findById(domainId)).thenReturn(domain); } + @After + public void tearDown() { + CallContext.unregister(); + } + @Test(expected = InvalidParameterValueException.class) public void InvalidDomainIDForAccountTest() { _dedicatedService.dedicateZone(10L, domainId, accountName); diff --git a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java index e5196688388..02124a2ff20 100644 --- a/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java +++ b/plugins/deployment-planners/implicit-dedication/test/org/apache/cloudstack/implicitplanner/ImplicitPlannerTest.java @@ -16,8 +16,8 @@ // under the License. package org.apache.cloudstack.implicitplanner; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; @@ -30,15 +30,12 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.UUID; import javax.inject.Inject; -import javax.naming.ConfigurationException; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; -import org.apache.cloudstack.test.utils.SpringUtils; +import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -54,6 +51,11 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; +import org.apache.cloudstack.test.utils.SpringUtils; + import com.cloud.capacity.CapacityManager; import com.cloud.capacity.CapacityVO; import com.cloud.capacity.dao.CapacityDao; @@ -82,7 +84,7 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.utils.Pair; import com.cloud.utils.component.ComponentContext; import com.cloud.vm.UserVmVO; @@ -151,12 +153,8 @@ public class ImplicitPlannerTest { int ramInOffering = 512; AccountVO acct = new AccountVO(accountId); - @BeforeClass - public static void setUp() throws ConfigurationException { - } - @Before - public void testSetUp() { + public void setUp() { ComponentContext.initComponentsLifeCycle(); acct.setType(Account.ACCOUNT_TYPE_NORMAL); @@ -164,7 +162,14 @@ public class ImplicitPlannerTest { acct.setDomainId(domainId); acct.setId(accountId); - UserContext.registerContext(1, acct, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, acct); + } + + @After + public void tearDown() { + CallContext.unregister(); } @Test diff --git a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalDhcpCmd.java b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalDhcpCmd.java index 7c56a8aeb02..04c913726fa 100755 --- a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalDhcpCmd.java +++ b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalDhcpCmd.java @@ -30,6 +30,8 @@ import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.PodResponse; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.baremetal.database.BaremetalDhcpVO; @@ -41,7 +43,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.user.UserContext; @APICommand(name="addBaremetalDhcp", description="adds a baremetal dhcp server", responseObject = BaremetalDhcpResponse.class) public class AddBaremetalDhcpCmd extends BaseAsyncCmd { private static final String s_name = "addexternaldhcpresponse"; @@ -102,7 +103,7 @@ public class AddBaremetalDhcpCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } public Long getPodId() { diff --git a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalPxeCmd.java b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalPxeCmd.java index e1b39e945a3..49effca5bc6 100755 --- a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalPxeCmd.java +++ b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/AddBaremetalPxeCmd.java @@ -30,6 +30,8 @@ import org.apache.cloudstack.api.response.PhysicalNetworkResponse; import org.apache.cloudstack.api.response.PodResponse; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.baremetal.database.BaremetalPxeVO; @@ -40,7 +42,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.user.UserContext; public class AddBaremetalPxeCmd extends BaseAsyncCmd { private static final String s_name = "addexternalpxeresponse"; public static final Logger s_logger = Logger.getLogger(AddBaremetalPxeCmd.class); @@ -95,7 +96,7 @@ public class AddBaremetalPxeCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } public Long getPhysicalNetworkId() { diff --git a/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java b/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java index d79d41e024c..d313bfac84f 100644 --- a/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java +++ b/plugins/hypervisors/vmware/test/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java @@ -17,7 +17,6 @@ package com.cloud.hypervisor.vmware; -import static org.junit.Assert.*; import static org.mockito.Mockito.when; import java.io.IOException; @@ -28,12 +27,7 @@ import java.util.UUID; import javax.inject.Inject; import javax.naming.ConfigurationException; -import junit.framework.TestCase; - -import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd; -import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; -import org.apache.cloudstack.test.utils.SpringUtils; +import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -41,7 +35,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.mockito.Spy; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; @@ -54,13 +47,19 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd; +import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; +import org.apache.cloudstack.test.utils.SpringUtils; + import com.cloud.agent.AgentManager; import com.cloud.cluster.ClusterManager; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterDetailsVO; -import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.ClusterVO; +import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenterVO; import com.cloud.dc.HostPodVO; import com.cloud.dc.dao.ClusterDao; @@ -77,7 +76,6 @@ import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao; import com.cloud.hypervisor.vmware.dao.LegacyZoneDao; import com.cloud.hypervisor.vmware.dao.VmwareDatacenterDao; import com.cloud.hypervisor.vmware.dao.VmwareDatacenterZoneMapDao; -import com.cloud.hypervisor.vmware.manager.VmwareManager; import com.cloud.hypervisor.vmware.manager.VmwareManagerImpl; import com.cloud.network.NetworkModel; import com.cloud.network.dao.CiscoNexusVSMDeviceDao; @@ -90,7 +88,7 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountService; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.exception.CloudRuntimeException; @@ -176,7 +174,10 @@ public class VmwareDatacenterApiUnitTest { acct.setType(Account.ACCOUNT_TYPE_ADMIN); acct.setAccountName("admin"); acct.setDomainId(domainId); - UserContext.registerContext(1, acct, null, true); + + UserVO user1 = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user1, acct); when(_accountDao.findByIdIncludingRemoved(0L)).thenReturn(acct); @@ -222,6 +223,11 @@ public class VmwareDatacenterApiUnitTest { Mockito.when(removeCmd.getZoneId()).thenReturn(1L); } + @After + public void tearDown() { + CallContext.unregister(); + } + //@Test(expected = InvalidParameterValueException.class) public void testAddVmwareDcToInvalidZone() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception { Mockito.when(addCmd.getZoneId()).thenReturn(2L); diff --git a/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/AddBigSwitchVnsDeviceCmd.java b/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/AddBigSwitchVnsDeviceCmd.java index 30f631dd5d6..a068d43624e 100644 --- a/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/AddBigSwitchVnsDeviceCmd.java +++ b/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/AddBigSwitchVnsDeviceCmd.java @@ -25,6 +25,7 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.api.response.BigSwitchVnsDeviceResponse; import com.cloud.exception.ConcurrentOperationException; @@ -34,7 +35,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.BigSwitchVnsDeviceVO; import com.cloud.network.element.BigSwitchVnsElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "addBigSwitchVnsDevice", responseObject=BigSwitchVnsDeviceResponse.class, description="Adds a BigSwitch VNS device", since = "4.1.0") @@ -96,7 +96,7 @@ public class AddBigSwitchVnsDeviceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/DeleteBigSwitchVnsDeviceCmd.java b/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/DeleteBigSwitchVnsDeviceCmd.java index 9a7dc480968..d7b670674cc 100644 --- a/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/DeleteBigSwitchVnsDeviceCmd.java +++ b/plugins/network-elements/bigswitch-vns/src/com/cloud/api/commands/DeleteBigSwitchVnsDeviceCmd.java @@ -25,6 +25,7 @@ import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.api.response.BigSwitchVnsDeviceResponse; import com.cloud.exception.ConcurrentOperationException; @@ -33,7 +34,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.BigSwitchVnsElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "deleteBigSwitchVnsDevice", responseObject=SuccessResponse.class, description=" delete a bigswitch vns device", since = "4.1.0") @@ -86,7 +86,7 @@ public class DeleteBigSwitchVnsDeviceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java index c880199f5c4..183b7ac20e9 100755 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoAsa1000vResourceCmd.java @@ -26,6 +26,8 @@ import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ClusterResponse; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.api.response.CiscoAsa1000vResourceResponse; @@ -36,7 +38,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.cisco.CiscoAsa1000vDevice; import com.cloud.network.element.CiscoAsa1000vService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name="addCiscoAsa1000vResource", responseObject=CiscoAsa1000vResourceResponse.class, description="Adds a Cisco Asa 1000v appliance") @@ -111,6 +112,6 @@ public class AddCiscoAsa1000vResourceCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoVnmcResourceCmd.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoVnmcResourceCmd.java index bfd6db95434..0aeb8631e14 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoVnmcResourceCmd.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/AddCiscoVnmcResourceCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.api.response.CiscoVnmcResourceResponse; @@ -35,7 +37,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.cisco.CiscoVnmcController; import com.cloud.network.element.CiscoVnmcElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name="addCiscoVnmcResource", responseObject=CiscoVnmcResourceResponse.class, description="Adds a Cisco Vnmc Controller") @@ -110,6 +111,6 @@ public class AddCiscoVnmcResourceCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoAsa1000vResourceCmd.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoAsa1000vResourceCmd.java index d4f86fa527a..717ec600dad 100755 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoAsa1000vResourceCmd.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoAsa1000vResourceCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.api.response.CiscoAsa1000vResourceResponse; @@ -34,7 +36,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.CiscoAsa1000vService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name="deleteCiscoAsa1000vResource", responseObject=SuccessResponse.class, description="Deletes a Cisco ASA 1000v appliance") @@ -87,7 +88,7 @@ public class DeleteCiscoAsa1000vResourceCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoVnmcResourceCmd.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoVnmcResourceCmd.java index d2a37202f0a..f175b717a80 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoVnmcResourceCmd.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/api/commands/DeleteCiscoVnmcResourceCmd.java @@ -25,6 +25,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import com.cloud.api.response.CiscoVnmcResourceResponse; @@ -34,7 +36,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.CiscoVnmcElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name="deleteCiscoVnmcResource", responseObject=SuccessResponse.class, description="Deletes a Cisco Vnmc controller") @@ -87,7 +88,7 @@ public class DeleteCiscoVnmcResourceCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java index 553325ccaa9..de52c21d405 100644 --- a/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java +++ b/plugins/network-elements/cisco-vnmc/src/com/cloud/network/element/CiscoVnmcElement.java @@ -28,7 +28,9 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice; + import org.apache.log4j.Logger; import com.cloud.agent.AgentManager; @@ -117,7 +119,6 @@ import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; @@ -359,8 +360,8 @@ public class CiscoVnmcElement extends AdapterBase implements SourceNatServicePro } if (outsideIp == null) { // none available, acquire one try { - Account caller = UserContext.current().getCaller(); - long callerUserId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + long callerUserId = CallContext.current().getCallingUserId(); outsideIp = _networkMgr.allocateIp(owner, false, caller, callerUserId, zone); } catch (ResourceAllocationException e) { s_logger.error("Unable to allocate additional public Ip address. Exception details " + e); diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java index 5f603b3166b..9c34a8bc44b 100644 --- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java +++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java @@ -37,6 +37,7 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd; +import org.apache.cloudstack.context.CallContext; import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager.OnError; @@ -112,7 +113,6 @@ import com.cloud.storage.dao.VMTemplateDao; import com.cloud.user.Account; import com.cloud.user.AccountService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -656,11 +656,11 @@ ElasticLoadBalancerManager, VirtualMachineGuru { result = _lbMgr.createPublicLoadBalancer(lb.getXid(), lb.getName(), lb.getDescription(), lb.getSourcePortStart(), lb.getDefaultPortStart(), ipId.longValue(), lb.getProtocol(), - lb.getAlgorithm(), false, UserContext.current()); + lb.getAlgorithm(), false, CallContext.current()); } catch (NetworkRuleConflictException e) { s_logger.warn("Failed to create LB rule, not continuing with ELB deployment"); if (newIp) { - releaseIp(ipId, UserContext.current().getCallerUserId(), account); + releaseIp(ipId, CallContext.current().getCallingUserId(), account); } throw e; } @@ -674,7 +674,7 @@ ElasticLoadBalancerManager, VirtualMachineGuru { if (elbVm == null) { s_logger.warn("Failed to deploy a new ELB vm for ip " + ipAddr + " in network " + network + "lb name=" + lb.getName()); if (newIp) - releaseIp(ipId, UserContext.current().getCallerUserId(), account); + releaseIp(ipId, CallContext.current().getCallingUserId(), account); } } diff --git a/plugins/network-elements/f5/src/com/cloud/api/commands/AddF5LoadBalancerCmd.java b/plugins/network-elements/f5/src/com/cloud/api/commands/AddF5LoadBalancerCmd.java index 1670351c55d..7960c22262c 100644 --- a/plugins/network-elements/f5/src/com/cloud/api/commands/AddF5LoadBalancerCmd.java +++ b/plugins/network-elements/f5/src/com/cloud/api/commands/AddF5LoadBalancerCmd.java @@ -21,9 +21,12 @@ import javax.inject.Inject; import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.F5LoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -33,7 +36,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.ExternalLoadBalancerDeviceVO; import com.cloud.network.element.F5ExternalLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "addF5LoadBalancer", responseObject=F5LoadBalancerResponse.class, description="Adds a F5 BigIP load balancer device") @@ -127,6 +129,6 @@ public class AddF5LoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/f5/src/com/cloud/api/commands/ConfigureF5LoadBalancerCmd.java b/plugins/network-elements/f5/src/com/cloud/api/commands/ConfigureF5LoadBalancerCmd.java index 209a25845cb..4b5f805f589 100644 --- a/plugins/network-elements/f5/src/com/cloud/api/commands/ConfigureF5LoadBalancerCmd.java +++ b/plugins/network-elements/f5/src/com/cloud/api/commands/ConfigureF5LoadBalancerCmd.java @@ -20,9 +20,12 @@ package com.cloud.api.commands; import javax.inject.Inject; import org.apache.cloudstack.api.*; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.F5LoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -32,7 +35,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.ExternalLoadBalancerDeviceVO; import com.cloud.network.element.F5ExternalLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "configureF5LoadBalancer", responseObject=F5LoadBalancerResponse.class, description="configures a F5 load balancer device") @@ -105,6 +107,6 @@ public class ConfigureF5LoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteF5LoadBalancerCmd.java b/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteF5LoadBalancerCmd.java index 691643d1370..2c3b52fe654 100644 --- a/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteF5LoadBalancerCmd.java +++ b/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteF5LoadBalancerCmd.java @@ -22,7 +22,6 @@ import javax.inject.Inject; import org.apache.log4j.Logger; import org.apache.cloudstack.api.BaseAsyncCmd; - import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; @@ -30,6 +29,8 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.F5LoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -38,7 +39,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.F5ExternalLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "deleteF5LoadBalancer", responseObject=SuccessResponse.class, description=" delete a F5 load balancer device") @@ -102,6 +102,6 @@ public class DeleteF5LoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java index 5a1d56f4852..70dafa307e4 100644 --- a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java +++ b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -23,7 +23,7 @@ import javax.inject.Inject; import junit.framework.TestCase; -import org.apache.cloudstack.network.lb.InternalLoadBalancerVMService; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,6 +31,9 @@ import org.mockito.Mockito; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.network.lb.InternalLoadBalancerVMService; + import com.cloud.deploy.DeploymentPlan; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -48,13 +51,12 @@ import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; import com.cloud.user.User; import com.cloud.user.UserVO; +import com.cloud.user.dao.AccountDao; import com.cloud.utils.component.ComponentContext; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.dao.DomainRouterDao; -import com.cloud.user.UserContext; -import com.cloud.user.dao.AccountDao; /** @@ -80,6 +82,7 @@ public class InternalLBVMServiceTest extends TestCase { long nonExistingVmId = 2L; long nonInternalLbVmId = 3L; + @Override @Before public void setUp() { //mock system offering creation as it's used by configure() method called by initComponentsLifeCycle @@ -94,7 +97,7 @@ public class InternalLBVMServiceTest extends TestCase { Mockito.when(_accountMgr.getSystemUser()).thenReturn(new UserVO(1)); Mockito.when(_accountMgr.getSystemAccount()).thenReturn(new AccountVO(2)); Mockito.when(_accountDao.findByIdIncludingRemoved(Mockito.anyLong())).thenReturn(new AccountVO(2)); - UserContext.registerContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); + CallContext.register(_accountMgr.getSystemUser(), _accountMgr.getSystemAccount()); DomainRouterVO validVm = new DomainRouterVO(validVmId,off.getId(),1,"alena",1,HypervisorType.XenServer,1,1,1, @@ -136,6 +139,12 @@ public class InternalLBVMServiceTest extends TestCase { } + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + //TESTS FOR START COMMAND diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddSrxFirewallCmd.java b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddSrxFirewallCmd.java index f5bb037ca00..e3ca4ea4ae8 100644 --- a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddSrxFirewallCmd.java +++ b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddSrxFirewallCmd.java @@ -19,6 +19,7 @@ package com.cloud.api.commands; import javax.inject.Inject; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; @@ -28,6 +29,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.SrxFirewallResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -37,7 +40,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.ExternalFirewallDeviceVO; import com.cloud.network.element.JuniperSRXFirewallElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "addSrxFirewall", responseObject=SrxFirewallResponse.class, description="Adds a SRX firewall device") @@ -130,6 +132,6 @@ public class AddSrxFirewallCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ConfigureSrxFirewallCmd.java b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ConfigureSrxFirewallCmd.java index 9bffee1f85c..1f92b8e91ac 100644 --- a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ConfigureSrxFirewallCmd.java +++ b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ConfigureSrxFirewallCmd.java @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.SrxFirewallResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -36,7 +38,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.ExternalFirewallDeviceVO; import com.cloud.network.element.JuniperSRXFirewallElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "configureSrxFirewall", responseObject=SrxFirewallResponse.class, description="Configures a SRX firewall device") @@ -109,6 +110,6 @@ public class ConfigureSrxFirewallCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteSrxFirewallCmd.java b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteSrxFirewallCmd.java index ce804a71cd5..364195b07aa 100644 --- a/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteSrxFirewallCmd.java +++ b/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteSrxFirewallCmd.java @@ -28,6 +28,8 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.SrxFirewallResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -36,7 +38,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.JuniperSRXFirewallElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "deleteSrxFirewall", responseObject=SuccessResponse.class, description=" delete a SRX firewall device") @@ -100,6 +101,6 @@ public class DeleteSrxFirewallCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/netscaler/src/com/cloud/api/commands/AddNetscalerLoadBalancerCmd.java b/plugins/network-elements/netscaler/src/com/cloud/api/commands/AddNetscalerLoadBalancerCmd.java index e4327b4348c..d04a183139a 100644 --- a/plugins/network-elements/netscaler/src/com/cloud/api/commands/AddNetscalerLoadBalancerCmd.java +++ b/plugins/network-elements/netscaler/src/com/cloud/api/commands/AddNetscalerLoadBalancerCmd.java @@ -20,10 +20,12 @@ import com.cloud.event.EventTypes; import com.cloud.exception.*; import com.cloud.network.dao.ExternalLoadBalancerDeviceVO; import com.cloud.network.element.NetscalerLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; + import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import javax.inject.Inject; @@ -143,6 +145,6 @@ public class AddNetscalerLoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/netscaler/src/com/cloud/api/commands/ConfigureNetscalerLoadBalancerCmd.java b/plugins/network-elements/netscaler/src/com/cloud/api/commands/ConfigureNetscalerLoadBalancerCmd.java index a04a48ded95..b6ce214c510 100644 --- a/plugins/network-elements/netscaler/src/com/cloud/api/commands/ConfigureNetscalerLoadBalancerCmd.java +++ b/plugins/network-elements/netscaler/src/com/cloud/api/commands/ConfigureNetscalerLoadBalancerCmd.java @@ -20,9 +20,12 @@ import javax.inject.Inject; import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.PodResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.NetscalerLoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -32,7 +35,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.ExternalLoadBalancerDeviceVO; import com.cloud.network.element.NetscalerLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "configureNetscalerLoadBalancer", responseObject=NetscalerLoadBalancerResponse.class, description="configures a netscaler load balancer device") @@ -129,6 +131,6 @@ public class ConfigureNetscalerLoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/netscaler/src/com/cloud/api/commands/DeleteNetscalerLoadBalancerCmd.java b/plugins/network-elements/netscaler/src/com/cloud/api/commands/DeleteNetscalerLoadBalancerCmd.java index 76f0273aecc..bf6b22a8972 100644 --- a/plugins/network-elements/netscaler/src/com/cloud/api/commands/DeleteNetscalerLoadBalancerCmd.java +++ b/plugins/network-elements/netscaler/src/com/cloud/api/commands/DeleteNetscalerLoadBalancerCmd.java @@ -27,6 +27,8 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.NetscalerLoadBalancerResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -35,7 +37,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.NetscalerLoadBalancerElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "deleteNetscalerLoadBalancer", responseObject=SuccessResponse.class, description=" delete a netscaler load balancer device") @@ -100,6 +101,6 @@ public class DeleteNetscalerLoadBalancerCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } } diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java index 5b2dacfe00f..7f0d87c1564 100644 --- a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java +++ b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java @@ -20,9 +20,12 @@ import javax.inject.Inject; import org.apache.cloudstack.api.*; import org.apache.cloudstack.api.response.PhysicalNetworkResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.NiciraNvpDeviceResponse; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; @@ -32,7 +35,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.NiciraNvpDeviceVO; import com.cloud.network.element.NiciraNvpElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "addNiciraNvpDevice", responseObject=NiciraNvpDeviceResponse.class, description="Adds a Nicira NVP device") @@ -122,7 +124,7 @@ public class AddNiciraNvpDeviceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/DeleteNiciraNvpDeviceCmd.java b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/DeleteNiciraNvpDeviceCmd.java index 9ba1c836a98..948f1bf1c6a 100755 --- a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/DeleteNiciraNvpDeviceCmd.java +++ b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/DeleteNiciraNvpDeviceCmd.java @@ -19,6 +19,7 @@ package com.cloud.api.commands; import javax.inject.Inject; import com.cloud.api.response.NiciraNvpDeviceResponse; + import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; @@ -29,6 +30,8 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.SuccessResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -36,7 +39,6 @@ import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.element.NiciraNvpElementService; -import com.cloud.user.UserContext; import com.cloud.utils.exception.CloudRuntimeException; @APICommand(name = "deleteNiciraNvpDevice", responseObject=SuccessResponse.class, description=" delete a nicira nvp device") @@ -90,7 +92,7 @@ public class DeleteNiciraNvpDeviceCmd extends BaseAsyncCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java b/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java index bbdf1108f90..34246ddefc4 100644 --- a/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java +++ b/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java @@ -20,9 +20,12 @@ import javax.ejb.Local; import javax.inject.Inject; import com.cloud.event.ActionEventUtils; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.context.CallContext; + import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.deploy.DeployDestination; @@ -40,7 +43,6 @@ import com.cloud.network.dao.NetworkVO; import com.cloud.network.ovs.OvsTunnelManager; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.vm.ReservationContext; @Component @@ -100,7 +102,7 @@ public class OvsGuestNetworkGuru extends GuestNetworkGuru { throw new InsufficientVirtualNetworkCapcityException("Unable to allocate vnet as a part of network " + network + " implement ", DataCenter.class, dcId); } implemented.setBroadcastUri(BroadcastDomainType.Vswitch.toUri(vnet)); - ActionEventUtils.onCompletedActionEvent(UserContext.current().getCallerUserId(), network.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + network.getId(), 0); + ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), network.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + network.getId(), 0); } else { implemented.setBroadcastUri(network.getBroadcastUri()); } diff --git a/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/AddSspCmd.java b/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/AddSspCmd.java index d42ee676ac2..cc0a672f9dd 100644 --- a/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/AddSspCmd.java +++ b/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/AddSspCmd.java @@ -23,7 +23,9 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.response.SspResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.element.SspService; + import org.apache.log4j.Logger; import com.cloud.dc.dao.DataCenterDao; @@ -33,7 +35,6 @@ import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.Host; -import com.cloud.user.UserContext; @APICommand(name="addStratosphereSsp", responseObject=SspResponse.class, description="Adds stratosphere ssp server") @@ -70,7 +71,7 @@ public class AddSspCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/DeleteSspCmd.java b/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/DeleteSspCmd.java index bfbd5d9f409..8278dd054e3 100644 --- a/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/DeleteSspCmd.java +++ b/plugins/network-elements/stratosphere-ssp/src/org/apache/cloudstack/api/commands/DeleteSspCmd.java @@ -24,7 +24,9 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.element.SspService; + import org.apache.log4j.Logger; import com.cloud.exception.ConcurrentOperationException; @@ -32,7 +34,6 @@ import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.user.UserContext; @APICommand(name="deleteStratosphereSsp", responseObject=SuccessResponse.class, description="Removes stratosphere ssp server") public class DeleteSspCmd extends BaseCmd { @@ -51,7 +52,7 @@ public class DeleteSspCmd extends BaseCmd { @Override public long getEntityOwnerId() { - return UserContext.current().getCaller().getId(); + return CallContext.current().getCallingAccount().getId(); } @Override diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index b24a238ea84..75a77f4d819 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -39,8 +39,11 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.log4j.Logger; + +import org.apache.cloudstack.context.ServerContexts; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; + import com.cloud.agent.AgentManager; import com.cloud.agent.Listener; import com.cloud.agent.StartupCommandProcessor; @@ -103,7 +106,6 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.storage.resource.DummySecondaryStorageResource; import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.user.AccountManager; -import com.cloud.utils.ActionDelegate; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; @@ -760,7 +762,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl Host h = _resourceMgr.createHostAndAgent(host.getId(), resource, host.getDetails(), false, null, true); return (h == null ? false : true); } else { - _executor.execute(new SimulateStartTask(host.getId(), resource, host.getDetails(), null)); + _executor.execute(new SimulateStartTask(host.getId(), resource, host.getDetails())); return true; } } @@ -1112,17 +1114,16 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl ServerResource resource; Map details; long id; - ActionDelegate actionDelegate; - public SimulateStartTask(long id, ServerResource resource, Map details, ActionDelegate actionDelegate) { + public SimulateStartTask(long id, ServerResource resource, Map details) { this.id = id; this.resource = resource; this.details = details; - this.actionDelegate = actionDelegate; } @Override public void run() { + ServerContexts.registerSystemContext(); try { if (s_logger.isDebugEnabled()) { s_logger.debug("Simulating start for resource " + resource.getName() + " id " + id); @@ -1132,9 +1133,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl } catch (Exception e) { s_logger.warn("Unable to simulate start on resource " + id + " name " + resource.getName(), e); } finally { - if (actionDelegate != null) { - actionDelegate.action(new Long(id)); - } + ServerContexts.unregisterSystemContext(); } } } @@ -1152,15 +1151,20 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl @Override public void run() { - _request.logD("Processing the first command "); - StartupCommand[] startups = new StartupCommand[_cmds.length]; - for (int i = 0; i < _cmds.length; i++) { - startups[i] = (StartupCommand) _cmds[i]; - } + ServerContexts.registerSystemContext(); + try { + _request.logD("Processing the first command "); + StartupCommand[] startups = new StartupCommand[_cmds.length]; + for (int i = 0; i < _cmds.length; i++) { + startups[i] = (StartupCommand)_cmds[i]; + } - AgentAttache attache = handleConnectedAgent(_link, startups, _request); - if (attache == null) { - s_logger.warn("Unable to create attache for agent: " + _request); + AgentAttache attache = handleConnectedAgent(_link, startups, _request); + if (attache == null) { + s_logger.warn("Unable to create attache for agent: " + _request); + } + } finally { + ServerContexts.unregisterSystemContext(); } } } diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java index b8862569106..c0b3117e94e 100755 --- a/server/src/com/cloud/api/ApiDispatcher.java +++ b/server/src/com/cloud/api/ApiDispatcher.java @@ -33,6 +33,9 @@ import java.util.regex.Matcher; import javax.annotation.PostConstruct; import javax.inject.Inject; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.InfrastructureEntity; import org.apache.cloudstack.acl.SecurityChecker.AccessType; @@ -51,19 +54,16 @@ import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.Validate; import org.apache.cloudstack.api.command.admin.resource.ArchiveAlertsCmd; import org.apache.cloudstack.api.command.admin.resource.DeleteAlertsCmd; -import org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd; import org.apache.cloudstack.api.command.user.event.ArchiveEventsCmd; import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd; import org.apache.cloudstack.api.command.user.event.ListEventsCmd; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; +import org.apache.cloudstack.context.CallContext; import com.cloud.async.AsyncJobManager; import com.cloud.dao.EntityManager; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.utils.DateUtil; import com.cloud.utils.ReflectUtil; import com.cloud.utils.exception.CSExceptionErrorCode; @@ -74,9 +74,12 @@ public class ApiDispatcher { private static final Logger s_logger = Logger.getLogger(ApiDispatcher.class.getName()); Long _createSnapshotQueueSizeLimit; - @Inject AsyncJobManager _asyncMgr = null; - @Inject AccountManager _accountMgr = null; - @Inject EntityManager _entityMgr = null; + @Inject + AsyncJobManager _asyncMgr = null; + @Inject + AccountManager _accountMgr = null; + @Inject + EntityManager _entityMgr = null; private static ApiDispatcher s_instance; @@ -89,7 +92,7 @@ public class ApiDispatcher { @PostConstruct void init() { - s_instance = this; + s_instance = this; } public void setCreateSnapshotQueueSizeLimit(Long snapshotLimit) { @@ -99,27 +102,25 @@ public class ApiDispatcher { public void dispatchCreateCmd(BaseAsyncCreateCmd cmd, Map params) throws Exception { processParameters(cmd, params); - UserContext ctx = UserContext.current(); - ctx.setAccountId(cmd.getEntityOwnerId()); - cmd.create(); + cmd.create(); } private void doAccessChecks(BaseCmd cmd, Map entitiesToAccess) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getActiveAccountById(cmd.getEntityOwnerId()); - if(cmd instanceof BaseAsyncCreateCmd) { + if (cmd instanceof BaseAsyncCreateCmd) { //check that caller can access the owner account. _accountMgr.checkAccess(caller, null, true, owner); } - if(!entitiesToAccess.isEmpty()){ + if (!entitiesToAccess.isEmpty()) { //check that caller can access the owner account. _accountMgr.checkAccess(caller, null, true, owner); for (Object entity : entitiesToAccess.keySet()) { if (entity instanceof ControlledEntity) { - _accountMgr.checkAccess(caller, entitiesToAccess.get(entity), true, (ControlledEntity) entity); + _accountMgr.checkAccess(caller, entitiesToAccess.get(entity), true, (ControlledEntity)entity); } else if (entity instanceof InfrastructureEntity) { //FIXME: Move this code in adapter, remove code from Account manager @@ -129,37 +130,36 @@ public class ApiDispatcher { } public void dispatch(BaseCmd cmd, Map params) throws Exception { - processParameters(cmd, params); - UserContext ctx = UserContext.current(); - ctx.setAccountId(cmd.getEntityOwnerId()); - - if (cmd instanceof BaseAsyncCmd) { + processParameters(cmd, params); + CallContext ctx = CallContext.current(); - BaseAsyncCmd asyncCmd = (BaseAsyncCmd) cmd; - String startEventId = params.get("ctxStartEventId"); - ctx.setStartEventId(Long.valueOf(startEventId)); + if (cmd instanceof BaseAsyncCmd) { - // Synchronise job on the object if needed - if (asyncCmd.getJob() != null && asyncCmd.getSyncObjId() != null && asyncCmd.getSyncObjType() != null) { - Long queueSizeLimit = null; - if (asyncCmd.getSyncObjType() != null && asyncCmd.getSyncObjType().equalsIgnoreCase(BaseAsyncCmd.snapshotHostSyncObject)) { - queueSizeLimit = _createSnapshotQueueSizeLimit; - } else { - queueSizeLimit = 1L; - } + BaseAsyncCmd asyncCmd = (BaseAsyncCmd)cmd; + String startEventId = params.get("ctxStartEventId"); + ctx.setStartEventId(Long.valueOf(startEventId)); - if (queueSizeLimit != null) { + // Synchronise job on the object if needed + if (asyncCmd.getJob() != null && asyncCmd.getSyncObjId() != null && asyncCmd.getSyncObjType() != null) { + Long queueSizeLimit = null; + if (asyncCmd.getSyncObjType() != null && asyncCmd.getSyncObjType().equalsIgnoreCase(BaseAsyncCmd.snapshotHostSyncObject)) { + queueSizeLimit = _createSnapshotQueueSizeLimit; + } else { + queueSizeLimit = 1L; + } + + if (queueSizeLimit != null) { _asyncMgr.syncAsyncJobExecution(asyncCmd.getJob(), asyncCmd.getSyncObjType(), asyncCmd.getSyncObjId().longValue(), queueSizeLimit); - } else { - s_logger.trace("The queue size is unlimited, skipping the synchronizing"); - } + } else { + s_logger.trace("The queue size is unlimited, skipping the synchronizing"); } } - cmd.execute(); + } + cmd.execute(); } - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings({"unchecked", "rawtypes"}) public static void processParameters(BaseCmd cmd, Map params) { Map entitiesToAccess = new HashMap(); Map unpackedParams = cmd.unpackParams(params); @@ -168,7 +168,7 @@ public class ApiDispatcher { Object pageSizeObj = unpackedParams.get(ApiConstants.PAGE_SIZE); Long pageSize = null; if (pageSizeObj != null) { - pageSize = Long.valueOf((String) pageSizeObj); + pageSize = Long.valueOf((String)pageSizeObj); } if ((unpackedParams.get(ApiConstants.PAGE) == null) && (pageSize != null && !pageSize.equals(BaseListCmd.PAGESIZE_UNLIMITED))) { @@ -193,7 +193,8 @@ public class ApiDispatcher { Object paramObj = unpackedParams.get(parameterAnnotation.name()); if (paramObj == null) { if (parameterAnnotation.required()) { - throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + " due to missing parameter " + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + + " due to missing parameter " + parameterAnnotation.name()); } continue; @@ -206,24 +207,28 @@ public class ApiDispatcher { if (s_logger.isDebugEnabled()) { s_logger.debug("Unable to execute API command " + cmd.getCommandName() + " due to invalid value " + paramObj + " for parameter " + parameterAnnotation.name()); } - throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + " due to invalid value " + paramObj + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + + " due to invalid value " + paramObj + " for parameter " + parameterAnnotation.name()); } catch (ParseException parseEx) { if (s_logger.isDebugEnabled()) { s_logger.debug("Invalid date parameter " + paramObj + " passed to command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8)); } - throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to parse date " + paramObj + " for command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to parse date " + paramObj + " for command " + + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + ", please pass dates in the format mentioned in the api documentation"); } catch (InvalidParameterValueException invEx) { - throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + " due to invalid value. " + invEx.getMessage()); + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to execute API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8) + + " due to invalid value. " + invEx.getMessage()); } catch (CloudRuntimeException cloudEx) { - s_logger.error("CloudRuntimeException", cloudEx); + s_logger.error("CloudRuntimeException", cloudEx); // FIXME: Better error message? This only happens if the API command is not executable, which typically //means // there was // and IllegalAccessException setting one of the parameters. - throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Internal error executing API command " + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8)); + throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Internal error executing API command " + + cmd.getCommandName().substring(0, cmd.getCommandName().length() - 8)); } //check access on the resource this field points to @@ -252,30 +257,30 @@ public class ApiDispatcher { switch (listType) { case LONG: case UUID: - List listParam = (List) field.get(cmd); + List listParam = (List)field.get(cmd); for (Long entityId : listParam) { Object entityObj = s_instance._entityMgr.findById(entity, entityId); entitiesToAccess.put(entityObj, checkAccess.accessType()); } break; - /* - * case STRING: List listParam = - * new ArrayList(); listParam = - * (List)field.get(cmd); for(String - * entityName: listParam){ - * ControlledEntity entityObj = - * (ControlledEntity - * )daoClassInstance(entityId); - * entitiesToAccess.add(entityObj); } - * break; - */ + /* + * case STRING: List listParam = + * new ArrayList(); listParam = + * (List)field.get(cmd); for(String + * entityName: listParam){ + * ControlledEntity entityObj = + * (ControlledEntity + * )daoClassInstance(entityId); + * entitiesToAccess.add(entityObj); } + * break; + */ default: break; } break; case LONG: case UUID: - Object entityObj = s_instance._entityMgr.findById(entity, (Long) field.get(cmd)); + Object entityObj = s_instance._entityMgr.findById(entity, (Long)field.get(cmd)); entitiesToAccess.put(entityObj, checkAccess.accessType()); break; default: @@ -333,7 +338,7 @@ public class ApiDispatcher { if (isPre3x && !isUuid) { try { internalId = Long.parseLong(uuid); - } catch(NumberFormatException e) { + } catch (NumberFormatException e) { internalId = null; } if (internalId != null) @@ -344,7 +349,7 @@ public class ApiDispatcher { Class[] entities = annotation.entityType()[0].getAnnotation(EntityReference.class).value(); // Go through each entity which is an interface to a VO class and get a VO object // Try to getId() for the object using reflection, break on first non-null value - for (Class entity: entities) { + for (Class entity : entities) { // For backward compatibility, we search within removed entities and let service layer deal // with removed ones, return empty response or error Object objVO = s_instance._entityMgr.findByUuidIncludingRemoved(entity, uuid); @@ -366,12 +371,12 @@ public class ApiDispatcher { if (s_logger.isDebugEnabled()) s_logger.debug("Object entity uuid = " + uuid + " does not exist in the database."); throw new InvalidParameterValueException("Invalid parameter " + annotation.name() + " value=" + uuid - + " due to incorrect long value format, or entity does not exist or due to incorrect parameter annotation for the field in api cmd class."); + + " due to incorrect long value format, or entity does not exist or due to incorrect parameter annotation for the field in api cmd class."); } return internalId; } - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings({"unchecked", "rawtypes"}) private static void setFieldValue(Field field, BaseCmd cmdObj, Object paramObj, Parameter annotation) throws IllegalArgumentException, ParseException { try { field.setAccessible(true); @@ -387,8 +392,7 @@ public class ApiDispatcher { if (cmdObj instanceof ListEventsCmd || cmdObj instanceof DeleteEventsCmd || cmdObj instanceof ArchiveEventsCmd || cmdObj instanceof ArchiveAlertsCmd - || cmdObj instanceof DeleteAlertsCmd - ) { + || cmdObj instanceof DeleteAlertsCmd) { boolean isObjInNewDateFormat = isObjInNewDateFormat(paramObj.toString()); if (isObjInNewDateFormat) { DateFormat newFormat = BaseCmd.NEW_INPUT_FORMAT; @@ -450,7 +454,7 @@ public class ApiDispatcher { case LONG: { listParam.add(Long.valueOf(token)); } - break; + break; case SHORT: listParam.add(Short.valueOf(token)); case STRING: diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 090d9c27b2f..a1e2106c775 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -133,6 +133,7 @@ import org.apache.cloudstack.api.response.VpcOfferingResponse; import org.apache.cloudstack.api.response.VpcResponse; import org.apache.cloudstack.api.response.VpnUsersResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; import org.apache.cloudstack.region.PortableIp; import org.apache.cloudstack.region.PortableIpRange; @@ -141,6 +142,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.usage.Usage; import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.usage.UsageTypes; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -276,7 +278,6 @@ import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; import com.cloud.utils.StringUtils; @@ -699,7 +700,7 @@ public class ApiResponseHelper implements ResponseGenerator { } // show this info to admin only - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (account.getType() == Account.ACCOUNT_TYPE_ADMIN) { VlanVO vl = ApiDBUtils.findVlanById(ipAddr.getVlanId()); if (vl != null) { @@ -2182,7 +2183,7 @@ public class ApiResponseHelper implements ResponseGenerator { response.setReservedIpRange(reservation); // return vlan information only to Root admin - if (network.getBroadcastUri() != null && UserContext.current().getCaller().getType() == Account.ACCOUNT_TYPE_ADMIN) { + if (network.getBroadcastUri() != null && CallContext.current().getCallingAccount().getType() == Account.ACCOUNT_TYPE_ADMIN) { String broadcastUri = network.getBroadcastUri().toString(); response.setBroadcastUri(broadcastUri); String vlan = "N/A"; diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 86b4cddb485..5a72e37e200 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -52,34 +52,6 @@ import javax.naming.ConfigurationException; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.apache.cloudstack.acl.APIChecker; -import org.apache.cloudstack.api.APICommand; -import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; -import org.apache.cloudstack.api.BaseAsyncCreateCmd; -import org.apache.cloudstack.api.BaseCmd; -import org.apache.cloudstack.api.BaseListCmd; -import org.apache.cloudstack.api.ResponseObject; -import org.apache.cloudstack.api.ServerApiException; -import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; -import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd; -import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd; -import org.apache.cloudstack.api.command.admin.user.ListUsersCmd; -import org.apache.cloudstack.api.command.user.account.ListAccountsCmd; -import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd; -import org.apache.cloudstack.api.command.user.event.ListEventsCmd; -import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd; -import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd; -import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd; -import org.apache.cloudstack.api.command.user.project.ListProjectsCmd; -import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd; -import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; -import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; -import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; -import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; -import org.apache.cloudstack.api.response.ExceptionResponse; -import org.apache.cloudstack.api.response.ListResponse; import org.apache.commons.codec.binary.Base64; import org.apache.http.ConnectionClosedException; import org.apache.http.HttpException; @@ -111,6 +83,36 @@ import org.apache.http.protocol.ResponseServer; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.acl.APIChecker; +import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.ApiErrorCode; +import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncCreateCmd; +import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.BaseListCmd; +import org.apache.cloudstack.api.ResponseObject; +import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; +import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd; +import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd; +import org.apache.cloudstack.api.command.admin.user.ListUsersCmd; +import org.apache.cloudstack.api.command.user.account.ListAccountsCmd; +import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd; +import org.apache.cloudstack.api.command.user.event.ListEventsCmd; +import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd; +import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd; +import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd; +import org.apache.cloudstack.api.command.user.project.ListProjectsCmd; +import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd; +import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; +import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; +import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; +import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; +import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd; +import org.apache.cloudstack.api.response.ExceptionResponse; +import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.response.ApiResponseSerializer; import com.cloud.async.AsyncCommandQueued; import com.cloud.async.AsyncJob; @@ -119,6 +121,7 @@ import com.cloud.async.AsyncJobVO; import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationVO; import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.dao.EntityManager; import com.cloud.domain.Domain; import com.cloud.domain.DomainVO; import com.cloud.event.ActionEventUtils; @@ -135,7 +138,6 @@ import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; import com.cloud.user.User; import com.cloud.user.UserAccount; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -162,6 +164,8 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer @Inject private DomainManager _domainMgr; @Inject private AsyncJobManager _asyncMgr; @Inject private ConfigurationDao _configDao; + @Inject + private EntityManager _entityMgr; @Inject List _pluggableServices; @Inject List _apiAccessCheckers; @@ -179,6 +183,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer @PostConstruct void initComponent() { s_instance = this; + CallContext.init(_entityMgr); } public static ApiServer getInstance() { @@ -297,7 +302,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer try { // always trust commands from API port, user context will always be UID_SYSTEM/ACCOUNT_ID_SYSTEM - UserContext.registerContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, true); + CallContext.register(_accountMgr.getSystemUser(), _accountMgr.getSystemAccount()); sb.insert(0, "(userId=" + User.UID_SYSTEM + " accountId=" + Account.ACCOUNT_ID_SYSTEM + " sessionId=" + null + ") "); String responseText = handleRequest(parameterMap, responseType, sb); sb.append(" 200 " + ((responseText == null) ? 0 : responseText.length())); @@ -314,7 +319,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer } } finally { s_accessLogger.info(sb.toString()); - UserContext.unregisterContext(); + CallContext.unregister(); } } @@ -411,7 +416,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer catch (InsufficientCapacityException ex){ s_logger.info(ex.getMessage()); String errorMsg = ex.getMessage(); - if (UserContext.current().getCaller().getType() != Account.ACCOUNT_TYPE_ADMIN){ + if (CallContext.current().getCallingAccount().getType() != Account.ACCOUNT_TYPE_ADMIN){ // hide internal details to non-admin user for security reason errorMsg = BaseCmd.USER_ERROR_MESSAGE; @@ -421,7 +426,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer catch (ResourceAllocationException ex){ s_logger.info(ex.getMessage()); String errorMsg = ex.getMessage(); - if (UserContext.current().getCaller().getType() != Account.ACCOUNT_TYPE_ADMIN){ + if (CallContext.current().getCallingAccount().getType() != Account.ACCOUNT_TYPE_ADMIN){ // hide internal details to non-admin user for security reason errorMsg = BaseCmd.USER_ERROR_MESSAGE; } @@ -430,7 +435,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer catch (ResourceUnavailableException ex){ s_logger.info(ex.getMessage()); String errorMsg = ex.getMessage(); - if (UserContext.current().getCaller().getType() != Account.ACCOUNT_TYPE_ADMIN){ + if (CallContext.current().getCallingAccount().getType() != Account.ACCOUNT_TYPE_ADMIN){ // hide internal details to non-admin user for security reason errorMsg = BaseCmd.USER_ERROR_MESSAGE; } @@ -447,7 +452,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer catch (Exception ex){ s_logger.error("unhandled exception executing api command: " + ((command == null) ? "null" : command[0]), ex); String errorMsg = ex.getMessage(); - if (UserContext.current().getCaller().getType() != Account.ACCOUNT_TYPE_ADMIN){ + if (CallContext.current().getCallingAccount().getType() != Account.ACCOUNT_TYPE_ADMIN){ // hide internal details to non-admin user for security reason errorMsg = BaseCmd.USER_ERROR_MESSAGE; } @@ -458,9 +463,9 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer } private String queueCommand(BaseCmd cmdObj, Map params) throws Exception { - UserContext ctx = UserContext.current(); - Long callerUserId = ctx.getCallerUserId(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Long callerUserId = ctx.getCallingUserId(); + Account caller = ctx.getCallingAccount(); // Queue command based on Cmd super class: @@ -504,8 +509,6 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer params.put("ctxStartEventId", String.valueOf(startEventId)); params.put("cmdEventType", asyncCmd.getEventType().toString()); - ctx.setAccountId(asyncCmd.getEntityOwnerId()); - Long instanceId = (objectId == null) ? asyncCmd.getInstanceId() : objectId; AsyncJobVO job = new AsyncJobVO(callerUserId, caller.getId(), cmdObj.getClass().getName(), ApiGsonHelper.getBuilder().create().toJson(params), instanceId, asyncCmd.getInstanceType()); @@ -731,8 +734,6 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer return false; } - UserContext.updateContext(user.getId(), account, null); - try{ checkCommandAvailable(user, commandName); } diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java index 7525b61e84a..2a5ad739863 100755 --- a/server/src/com/cloud/api/ApiServlet.java +++ b/server/src/com/cloud/api/ApiServlet.java @@ -31,17 +31,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseCmd; -import org.apache.cloudstack.api.ServerApiException; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import org.springframework.web.context.support.SpringBeanAutowiringSupport; +import org.apache.cloudstack.api.ApiErrorCode; +import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.context.CallContext; + +import com.cloud.dao.EntityManager; import com.cloud.exception.CloudAuthenticationException; import com.cloud.user.Account; import com.cloud.user.AccountService; -import com.cloud.user.UserContext; +import com.cloud.user.User; import com.cloud.utils.StringUtils; @Component("apiServlet") @@ -52,13 +55,15 @@ public class ApiServlet extends HttpServlet { @Inject ApiServerService _apiServer; @Inject AccountService _accountMgr; + @Inject + EntityManager _entityMgr; public ApiServlet() { } @Override public void init(ServletConfig config) throws ServletException { - SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext()); + SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext()); } @Override @@ -235,7 +240,6 @@ public class ApiServlet extends HttpServlet { // Initialize an empty context and we will update it after we have verified the request below, // we no longer rely on web-session here, verifyRequest will populate user/account information // if a API key exists - UserContext.registerContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); Long userId = null; if (!isNew) { @@ -266,7 +270,8 @@ public class ApiServlet extends HttpServlet { writeResponse(resp, serializedResponse, HttpServletResponse.SC_BAD_REQUEST, responseType); return; } - UserContext.updateContext(userId, (Account) accountObj, session.getId()); + User user = _entityMgr.findById(User.class, userId); + CallContext.register(user, (Account)accountObj); } else { // Invalidate the session to ensure we won't allow a request across management server // restarts if the userId was serialized to the stored session @@ -280,6 +285,8 @@ public class ApiServlet extends HttpServlet { writeResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType); return; } + } else { + CallContext.register(_accountMgr.getSystemUser(), _accountMgr.getSystemAccount()); } if (_apiServer.verifyRequest(params, userId)) { @@ -296,8 +303,8 @@ public class ApiServlet extends HttpServlet { * key mechanism updateUserContext(params, session != null ? session.getId() : null); */ - auditTrailSb.insert(0, "(userId=" + UserContext.current().getCallerUserId() + " accountId=" - + UserContext.current().getCaller().getId() + " sessionId=" + (session != null ? session.getId() : null) + ")"); + auditTrailSb.insert(0, "(userId=" + CallContext.current().getCallingUserId() + " accountId=" + + CallContext.current().getCallingAccount().getId() + " sessionId=" + (session != null ? session.getId() : null) + ")"); // Add the HTTP method (GET/POST/PUT/DELETE) as well into the params map. params.put("httpmethod", new String[] { req.getMethod() }); @@ -330,7 +337,7 @@ public class ApiServlet extends HttpServlet { s_logger.debug("===END=== " + StringUtils.cleanString(reqStr)); } // cleanup user context to prevent from being peeked in other request context - UserContext.unregisterContext(); + CallContext.unregister(); } } diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 462a2761b31..cef5ddf01de 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -77,8 +77,10 @@ import org.apache.cloudstack.api.response.UserResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState; import org.apache.cloudstack.query.QueryService; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -166,7 +168,6 @@ import com.cloud.template.VirtualMachineTemplate.TemplateFilter; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.DateUtil; import com.cloud.utils.Pair; @@ -334,7 +335,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForUsersInternal(ListUsersCmd cmd) throws PermissionDeniedException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // TODO: Integrate with ACL checkAccess refactoring Long domainId = cmd.getDomainId(); @@ -440,7 +441,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } private Pair, Integer> searchForEventsInternal(ListEventsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Long id = cmd.getId(); @@ -555,7 +556,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } private Pair, Integer> listTagsInternal(ListTagsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); String key = cmd.getKey(); String value = cmd.getValue(); @@ -636,7 +637,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { String name = cmd.getGroupName(); String keyword = cmd.getKeyword(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( @@ -689,7 +690,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } private Pair, Integer> searchForUserVMsInternal(ListVMsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); String hypervisor = cmd.getHypervisor(); boolean listAll = cmd.listAll(); @@ -947,7 +948,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForSecurityGroupsInternal(ListSecurityGroupsCmd cmd) throws PermissionDeniedException, InvalidParameterValueException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long instanceId = cmd.getVirtualMachineId(); String securityGroup = cmd.getSecurityGroupName(); Long id = cmd.getId(); @@ -1080,7 +1081,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForRoutersInternal(BaseListProjectAndAccountResourcesCmd cmd, Long id, String name, String state, Long zoneId, Long podId, Long hostId, String keyword, Long networkId, Long vpcId, Boolean forVpc, String role) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( @@ -1216,7 +1217,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { boolean isRecursive = cmd.isRecursive(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long accountId = null; String path = null; @@ -1358,7 +1359,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { boolean isRecursive = cmd.isRecursive(); boolean listAll = cmd.listAll(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( @@ -1424,7 +1425,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { // long projectId, String accountName, String role, Long startIndex, // Long pageSizeVal) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // check that the project exists Project project = _projectDao.findById(projectId); @@ -1483,7 +1484,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { public Pair, Integer> searchForServersInternal(ListHostsCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Object name = cmd.getHostName(); Object type = cmd.getType(); Object state = cmd.getState(); @@ -1595,7 +1596,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForVolumesInternal(ListVolumesCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Long id = cmd.getId(); @@ -1730,7 +1731,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } private Pair, Integer> searchForAccountsInternal(ListAccountsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long domainId = cmd.getDomainId(); Long accountId = cmd.getId(); String accountName = cmd.getSearchName(); @@ -1858,7 +1859,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForAsyncJobsInternal(ListAsyncJobsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); @@ -1946,7 +1947,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } } - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Object id = cmd.getId(); Object name = cmd.getStoragePoolName(); Object path = cmd.getPath(); @@ -2038,7 +2039,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForImageStoresInternal(ListImageStoresCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Object id = cmd.getId(); Object name = cmd.getStoreName(); String provider = cmd.getProvider(); @@ -2118,7 +2119,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { private Pair, Integer> searchForCacheStoresInternal(ListCacheStoresCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Object id = cmd.getId(); Object name = cmd.getStoreName(); String provider = cmd.getProvider(); @@ -2212,7 +2213,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { cmd.getPageSizeVal()); SearchCriteria sc = _diskOfferingJoinDao.createSearchCriteria(); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); Object name = cmd.getDiskOfferingName(); Object id = cmd.getId(); Object keyword = cmd.getKeyword(); @@ -2333,7 +2334,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { cmd.getPageSizeVal()); SearchCriteria sc = _srvOfferingJoinDao.createSearchCriteria(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Object name = cmd.getServiceOfferingName(); Object id = cmd.getId(); Object keyword = cmd.getKeyword(); @@ -2455,7 +2456,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } private Pair, Integer> listDataCentersInternal(ListZonesByCmd cmd) { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); Long domainId = cmd.getDomainId(); Long id = cmd.getId(); String keyword = cmd.getKeyword(); @@ -2651,7 +2652,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { TemplateFilter templateFilter = TemplateFilter.valueOf(cmd.getTemplateFilter()); Long id = cmd.getId(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); boolean listAll = false; if (templateFilter != null && templateFilter == TemplateFilter.all) { @@ -2935,7 +2936,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { TemplateFilter isoFilter = TemplateFilter.valueOf(cmd.getIsoFilter()); Long id = cmd.getId(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); boolean listAll = false; if (isoFilter != null && isoFilter == TemplateFilter.all) { @@ -2981,7 +2982,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { String affinityGroupName, String affinityGroupType, Long vmId, String accountName, Long domainId, boolean isRecursive, boolean listAll, Long startIndex, Long pageSize) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long accountId = caller.getAccountId(); diff --git a/server/src/com/cloud/api/query/ViewResponseHelper.java b/server/src/com/cloud/api/query/ViewResponseHelper.java index 59722297d6d..8e69dd1c96a 100644 --- a/server/src/com/cloud/api/query/ViewResponseHelper.java +++ b/server/src/com/cloud/api/query/ViewResponseHelper.java @@ -37,7 +37,7 @@ import com.cloud.api.query.vo.UserAccountJoinVO; import com.cloud.api.query.vo.UserVmJoinVO; import com.cloud.api.query.vo.VolumeJoinVO; import com.cloud.user.Account; -import com.cloud.user.UserContext; + import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.api.ApiConstants.HostDetails; import org.apache.cloudstack.api.ApiConstants.VMDetails; @@ -62,11 +62,13 @@ import org.apache.cloudstack.api.response.UserResponse; import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.api.response.ZoneResponse; -import org.apache.log4j.Logger; +import org.apache.cloudstack.context.CallContext; +import org.apache.log4j.Logger; import com.cloud.api.query.vo.ImageStoreJoinVO; import com.cloud.api.query.vo.TemplateJoinVO; + import java.util.ArrayList; import java.util.EnumSet; import java.util.Hashtable; @@ -118,7 +120,7 @@ public class ViewResponseHelper { } public static List createUserVmResponse(String objectName, EnumSet details, UserVmJoinVO... userVms) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Hashtable vmDataList = new Hashtable(); // Initialise the vmdatalist with the input data @@ -139,7 +141,7 @@ public class ViewResponseHelper { } public static List createDomainRouterResponse(DomainRouterJoinVO... routers) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Hashtable vrDataList = new Hashtable(); // Initialise the vrdatalist with the input data for (DomainRouterJoinVO vr : routers) { @@ -159,7 +161,7 @@ public class ViewResponseHelper { public static List createSecurityGroupResponses(List securityGroups) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Hashtable vrDataList = new Hashtable(); // Initialise the vrdatalist with the input data for (SecurityGroupJoinVO vr : securityGroups) { diff --git a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java index 4c8b545f343..edceb26666c 100644 --- a/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/DataCenterJoinDaoImpl.java @@ -17,6 +17,7 @@ package com.cloud.api.query.dao; import java.util.List; + import javax.ejb.Local; import org.apache.log4j.Logger; @@ -25,13 +26,15 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiResponseHelper; import com.cloud.api.query.vo.DataCenterJoinVO; import com.cloud.dc.DataCenter; + import org.apache.cloudstack.api.response.ZoneResponse; +import org.apache.cloudstack.context.CallContext; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; + import org.springframework.stereotype.Component; @Component @@ -56,7 +59,7 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase im private String getTemplateStatus(TemplateJoinVO template){ boolean isAdmin = false; - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if ((caller == null) || BaseCmd.isAdmin(caller.getType())) { isAdmin = true; } @@ -316,7 +317,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBase im isoResponse.setDomainName(iso.getDomainName()); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); boolean isAdmin = false; if ((caller == null) || BaseCmd.isAdmin(caller.getType())) { isAdmin = true; diff --git a/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java index 1c18c966ea0..90bb8c05dae 100644 --- a/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java @@ -23,6 +23,8 @@ import javax.ejb.Local; import javax.inject.Inject; import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -37,7 +39,6 @@ import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.Volume; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; @@ -73,7 +74,7 @@ public class VolumeJoinDaoImpl extends GenericDaoBase implem @Override public VolumeResponse newVolumeResponse(VolumeJoinVO volume) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VolumeResponse volResponse = new VolumeResponse(); volResponse.setId(volume.getUuid()); diff --git a/server/src/com/cloud/async/AsyncJobManagerImpl.java b/server/src/com/cloud/async/AsyncJobManagerImpl.java index d3efdeec3f8..42ca3ae0700 100644 --- a/server/src/com/cloud/async/AsyncJobManagerImpl.java +++ b/server/src/com/cloud/async/AsyncJobManagerImpl.java @@ -36,42 +36,44 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; +import org.apache.log4j.NDC; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.stereotype.Component; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd; import org.apache.cloudstack.api.response.ExceptionResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.framework.events.EventBus; import org.apache.cloudstack.framework.events.EventBusException; -import org.apache.log4j.Logger; -import org.apache.log4j.NDC; -import org.springframework.stereotype.Component; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import com.cloud.api.ApiDispatcher; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiDispatcher; import com.cloud.api.ApiGsonHelper; import com.cloud.api.ApiSerializerHelper; import com.cloud.async.dao.AsyncJobDao; -import com.cloud.domain.dao.DomainDao; -import com.cloud.domain.Domain; -import com.cloud.domain.DomainVO; - import com.cloud.cluster.ClusterManager; import com.cloud.cluster.ClusterManagerListener; import com.cloud.cluster.ManagementServerHostVO; import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.dao.EntityManager; +import com.cloud.domain.DomainVO; +import com.cloud.domain.dao.DomainDao; +import com.cloud.event.EventCategory; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; -import com.cloud.event.EventCategory; -import com.cloud.event.EventTypes; import com.cloud.server.ManagementServer; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; @@ -86,8 +88,6 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.ExceptionUtil; import com.cloud.utils.mgmt.JmxUtil; import com.cloud.utils.net.MacAddress; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; @Component @Local(value={AsyncJobManager.class}) @@ -110,6 +110,9 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, private long _jobExpireSeconds = 86400; // 1 day private long _jobCancelThresholdSeconds = 3600; // 1 hour (for cancelling the jobs blocking other jobs) + @Inject + private EntityManager _entityMgr; + @Inject private ApiDispatcher _dispatcher; private final ScheduledExecutorService _heartbeatScheduler = @@ -378,7 +381,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, @Override public AsyncJob queryAsyncJobResult(QueryAsyncJobResultCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); AsyncJobVO job = _jobDao.findById(cmd.getId()); if (job == null) { @@ -517,16 +520,19 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, String acctIdStr = params.get("ctxAccountId"); Long userId = null; Account accountObject = null; + User user = null; if (userIdStr != null) { userId = Long.parseLong(userIdStr); + user = _entityMgr.findById(User.class, userId); } if (acctIdStr != null) { accountObject = _accountDao.findById(Long.parseLong(acctIdStr)); } - UserContext.registerContext(userId, accountObject, null, false); + + CallContext.register(user, accountObject); try { // dispatch could ultimately queue the job _dispatcher.dispatch(cmdObj, params); @@ -534,7 +540,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, // serialize this to the async job table completeAsyncJob(jobId, AsyncJobResult.STATUS_SUCCEEDED, 0, cmdObj.getResponseObject()); } finally { - UserContext.unregisterContext(); + CallContext.unregister(); } // commands might need to be queued as part of synchronization here, so they just have to be re-dispatched from the queue mechanism... @@ -723,7 +729,7 @@ public class AsyncJobManagerImpl extends ManagerBase implements AsyncJobManager, for(AsyncJobVO job : l) { s_logger.trace("Expunging unfinished job " + job); expungeAsyncJob(job); - } + } //2) Expunge finished jobs List completedJobs = _jobDao.getExpiredCompletedJobs(cutTime, 100); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 7e0bc259ec5..fd170bd850f 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -39,6 +39,9 @@ import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.api.ApiConstants.LDAPParams; import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd; @@ -66,7 +69,7 @@ import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd; import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd; import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd; import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd; -import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.region.PortableIp; import org.apache.cloudstack.region.PortableIpDao; @@ -80,8 +83,6 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO; import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.alert.AlertManager; import com.cloud.api.ApiDBUtils; @@ -182,7 +183,6 @@ import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; 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.NumbersUtil; import com.cloud.utils.Pair; @@ -613,14 +613,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati @Override @ActionEvent(eventType = EventTypes.EVENT_CONFIGURATION_VALUE_EDIT, eventDescription = "updating configuration") public Configuration updateConfiguration(UpdateCfgCmd cmd) throws InvalidParameterValueException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); String name = cmd.getCfgName(); String value = cmd.getValue(); Long zoneId = cmd.getZoneId(); Long clusterId = cmd.getClusterId(); Long storagepoolId = cmd.getStoragepoolId(); Long accountId = cmd.getAccountId(); - UserContext.current().setEventDetails( + CallContext.current().setEventDetails( " Name: " + name + " New Value: " + (((name.toLowerCase()).contains("password")) ? "*****" : (((value == null) ? "" : value)))); // check if config value exists @@ -1185,7 +1185,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati public Pod createPod(long zoneId, String name, String startIp, String endIp, String gateway, String netmask, String allocationState) { String cidr = NetUtils.ipAndNetMaskToCidr(gateway, netmask); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); if (allocationState == null) { allocationState = Grouping.AllocationState.Enabled.toString(); @@ -1205,7 +1205,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati // Check if zone is disabled DataCenterVO zone = _zoneDao.findById(zoneId); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) { throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: " + zoneId); @@ -1481,7 +1481,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati Transaction txn = Transaction.currentTxn(); boolean success = false; - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); Long zoneId = cmd.getId(); if (userId == null) { @@ -2006,7 +2006,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati @ActionEvent(eventType = EventTypes.EVENT_ZONE_CREATE, eventDescription = "creating zone", async = false) public DataCenter createZone(CreateZoneCmd cmd) { // grab parameters from the command - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); String zoneName = cmd.getZoneName(); String dns1 = cmd.getDns1(); String dns2 = cmd.getDns2(); @@ -2062,7 +2062,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati @Override public ServiceOffering createServiceOffering(CreateServiceOfferingCmd cmd) { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); String name = cmd.getServiceOfferingName(); if ((name == null) || (name.length() == 0)) { @@ -2185,7 +2185,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati if (details != null) { _serviceOfferingDetailsDao.persist(offering.getId(), details); } - UserContext.current().setEventDetails("Service offering id=" + offering.getId()); + CallContext.current().setEventDetails("Service offering id=" + offering.getId()); return offering; } else { return null; @@ -2199,7 +2199,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati Long id = cmd.getId(); String name = cmd.getServiceOfferingName(); Integer sortKey = cmd.getSortKey(); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); if (userId == null) { userId = Long.valueOf(User.UID_SYSTEM); @@ -2257,7 +2257,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati if (_serviceOfferingDao.update(id, offering)) { offering = _serviceOfferingDao.findById(id); - UserContext.current().setEventDetails("Service offering id=" + offering.getId()); + CallContext.current().setEventDetails("Service offering id=" + offering.getId()); return offering; } else { return null; @@ -2334,10 +2334,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati if (iopsWriteRate != null && (iopsWriteRate > 0)) newDiskOffering.setIopsWriteRate(iopsWriteRate); - UserContext.current().setEventDetails("Disk offering id=" + newDiskOffering.getId()); + CallContext.current().setEventDetails("Disk offering id=" + newDiskOffering.getId()); DiskOfferingVO offering = _diskOfferingDao.persist(newDiskOffering); if (offering != null) { - UserContext.current().setEventDetails("Disk offering id=" + newDiskOffering.getId()); + CallContext.current().setEventDetails("Disk offering id=" + newDiskOffering.getId()); return offering; } else { return null; @@ -2448,7 +2448,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati // } if (_diskOfferingDao.update(diskOfferingId, diskOffering)) { - UserContext.current().setEventDetails("Disk offering id=" + diskOffering.getId()); + CallContext.current().setEventDetails("Disk offering id=" + diskOffering.getId()); return _diskOfferingDao.findById(diskOfferingId); } else { return null; @@ -2467,7 +2467,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } if (_diskOfferingDao.remove(diskOfferingId)) { - UserContext.current().setEventDetails("Disk offering id=" + diskOfferingId); + CallContext.current().setEventDetails("Disk offering id=" + diskOfferingId); return true; } else { return false; @@ -2479,7 +2479,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati public boolean deleteServiceOffering(DeleteServiceOfferingCmd cmd) { Long offeringId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); if (userId == null) { userId = Long.valueOf(User.UID_SYSTEM); @@ -2496,7 +2496,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } if (_serviceOfferingDao.remove(offeringId)) { - UserContext.current().setEventDetails("Service offering id=" + offeringId); + CallContext.current().setEventDetails("Service offering id=" + offeringId); return true; } else { return false; @@ -2640,7 +2640,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } // Check if zone is enabled - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType())) { throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: " + zoneId); @@ -2884,7 +2884,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } // ACL check - checkZoneAccess(UserContext.current().getCaller(), zone); + checkZoneAccess(CallContext.current().getCallingAccount(), zone); // Validate the physical network if (_physicalNetworkDao.findById(physicalNetworkId) == null) { @@ -3089,7 +3089,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } } - // Check if the vlan is being used + // Check if the vlan is being used if (_zoneDao.findVnet(zoneId, physicalNetworkId, vlanId).size() > 0) { throw new InvalidParameterValueException("The VLAN tag " + vlanId + " is already being used for dynamic vlan allocation for the guest network in zone " + zone.getName()); @@ -3426,8 +3426,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati throw new InvalidParameterValueException("Please specify a valid IP range id."); } - return releasePublicIpRange(vlanDbId, UserContext.current().getCallerUserId(), UserContext.current() - .getCaller()); + return releasePublicIpRange(vlanDbId, CallContext.current().getCallingUserId(), CallContext.current() + .getCallingAccount()); } @DB @@ -3765,8 +3765,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati throw new InvalidParameterValueException("Please specify a valid IP range id."); } - return deleteVlanAndPublicIpRange(UserContext.current().getCallerUserId(), vlanDbId, UserContext.current() - .getCaller()); + return deleteVlanAndPublicIpRange(CallContext.current().getCallingUserId(), vlanDbId, CallContext.current() + .getCallingAccount()); } @Override @@ -4035,9 +4035,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } } - return createNetworkOffering(name, displayText, trafficType, tags, specifyVlan, availability, networkRate, + + NetworkOffering offering = createNetworkOffering(name, displayText, trafficType, tags, specifyVlan, availability, networkRate, serviceProviderMap, false, guestType, false, serviceOfferingId, conserveMode, serviceCapabilityMap, specifyIpRanges, isPersistent, details, egressDefaultPolicy); + CallContext.current().setEventDetails(" Id: " + offering.getId() + " Name: " + name); + return offering; } void validateLoadBalancerServiceCapabilities(Map lbServiceCapabilityMap) { @@ -4364,7 +4367,6 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati txn.commit(); - UserContext.current().setEventDetails(" Id: " + offering.getId() + " Name: " + name); return offering; } @@ -4415,7 +4417,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati isAscending = (isAscending == null ? true : isAscending); Filter searchFilter = new Filter(NetworkOfferingVO.class, "sortKey", isAscending, cmd.getStartIndex(), cmd.getPageSizeVal()); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); SearchCriteria sc = _networkOfferingDao.createSearchCriteria(); Long id = cmd.getId(); @@ -4479,7 +4481,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati } if (specifyVlan != null) { sc.addAnd("specifyVlan", SearchCriteria.Op.EQ, specifyVlan); - } + } if (availability != null) { sc.addAnd("availability", SearchCriteria.Op.EQ, availability); @@ -4652,7 +4654,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati @ActionEvent(eventType = EventTypes.EVENT_NETWORK_OFFERING_DELETE, eventDescription = "deleting network offering") public boolean deleteNetworkOffering(DeleteNetworkOfferingCmd cmd) { Long offeringId = cmd.getId(); - UserContext.current().setEventDetails(" Id: " + offeringId); + CallContext.current().setEventDetails(" Id: " + offeringId); // Verify network offering id NetworkOfferingVO offering = _networkOfferingDao.findById(offeringId); @@ -4693,7 +4695,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati Integer sortKey = cmd.getSortKey(); Availability availability = null; String state = cmd.getState(); - UserContext.current().setEventDetails(" Id: " + id); + CallContext.current().setEventDetails(" Id: " + id); // Verify input parameters NetworkOfferingVO offeringToUpdate = _networkOfferingDao.findById(id); @@ -4795,7 +4797,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati acctForUpdate.setDefaultZoneId(defaultZoneId); if (_accountDao.update(account.getId(), acctForUpdate)) { - UserContext.current().setEventDetails("Default zone id= " + defaultZoneId); + CallContext.current().setEventDetails("Default zone id= " + defaultZoneId); return _accountDao.findById(account.getId()); } else { return null; diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index bec04c00eeb..1035c5caf33 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -33,6 +33,7 @@ import org.apache.log4j.Logger; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao; @@ -110,7 +111,6 @@ import com.cloud.template.TemplateManager; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -1504,9 +1504,9 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy //release elastic IP here if assigned IPAddressVO ip = _ipAddressDao.findByAssociatedVmId(profile.getId()); if (ip != null && ip.getSystem()) { - UserContext ctx = UserContext.current(); + CallContext ctx = CallContext.current(); try { - _rulesMgr.disableStaticNat(ip.getId(), ctx.getCaller(), ctx.getCallerUserId(), true); + _rulesMgr.disableStaticNat(ip.getId(), ctx.getCallingAccount(), ctx.getCallingUserId(), true); } catch (Exception ex) { s_logger.warn("Failed to disable static nat and release system ip " + ip + " as a part of vm " + profile.getVirtualMachine() + " stop due to exception ", ex); } diff --git a/server/src/com/cloud/event/ActionEventInterceptor.java b/server/src/com/cloud/event/ActionEventInterceptor.java index d31a3556e95..ba7e270af90 100644 --- a/server/src/com/cloud/event/ActionEventInterceptor.java +++ b/server/src/com/cloud/event/ActionEventInterceptor.java @@ -20,7 +20,8 @@ import java.lang.reflect.Method; import org.apache.log4j.Logger; -import com.cloud.user.UserContext; +import org.apache.cloudstack.context.CallContext; + import com.cloud.utils.component.ComponentMethodInterceptor; public class ActionEventInterceptor implements ComponentMethodInterceptor { @@ -36,9 +37,9 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor { if (actionEvent != null) { boolean async = actionEvent.async(); if(async){ - UserContext ctx = UserContext.current(); - long userId = ctx.getCallerUserId(); - long accountId = ctx.getAccountId(); + CallContext ctx = CallContext.current(); + long userId = ctx.getCallingUserId(); + long accountId = ctx.getCallingAccountId(); long startEventId = ctx.getStartEventId(); String eventDescription = actionEvent.eventDescription(); if(ctx.getEventDetails() != null){ @@ -54,9 +55,9 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor { public void interceptComplete(Method method, Object target, Object event) { ActionEvent actionEvent = method.getAnnotation(ActionEvent.class); if (actionEvent != null) { - UserContext ctx = UserContext.current(); - long userId = ctx.getCallerUserId(); - long accountId = ctx.getAccountId(); + CallContext ctx = CallContext.current(); + long userId = ctx.getCallingUserId(); + long accountId = ctx.getCallingAccountId(); long startEventId = ctx.getStartEventId(); String eventDescription = actionEvent.eventDescription(); if(ctx.getEventDetails() != null){ @@ -76,9 +77,9 @@ public class ActionEventInterceptor implements ComponentMethodInterceptor { public void interceptException(Method method, Object target, Object event) { ActionEvent actionEvent = method.getAnnotation(ActionEvent.class); if (actionEvent != null) { - UserContext ctx = UserContext.current(); - long userId = ctx.getCallerUserId(); - long accountId = ctx.getAccountId(); + CallContext ctx = CallContext.current(); + long userId = ctx.getCallingUserId(); + long accountId = ctx.getCallingAccountId(); long startEventId = ctx.getStartEventId(); String eventDescription = actionEvent.eventDescription(); if(ctx.getEventDetails() != null){ diff --git a/server/src/com/cloud/event/ActionEventUtils.java b/server/src/com/cloud/event/ActionEventUtils.java index 906689f48a5..7b727cd6f9d 100755 --- a/server/src/com/cloud/event/ActionEventUtils.java +++ b/server/src/com/cloud/event/ActionEventUtils.java @@ -17,6 +17,19 @@ package com.cloud.event; +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; + +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.framework.events.EventBus; +import org.apache.cloudstack.framework.events.EventBusException; + import com.cloud.event.dao.EventDao; import com.cloud.server.ManagementServer; import com.cloud.user.Account; @@ -24,20 +37,8 @@ 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; -import org.apache.log4j.Logger; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.util.HashMap; -import java.util.Map; - -@Component public class ActionEventUtils { private static final Logger s_logger = Logger.getLogger(ActionEventUtils.class); @@ -46,6 +47,12 @@ public class ActionEventUtils { protected static UserDao _userDao; protected static EventBus _eventBus = null; + public static final String EventDetails = "event_details"; + public static final String EventId = "event_id"; + public static final String EntityType = "entity_type"; + public static final String EntityUuid = "entity_uuid"; + public static final String EntityDetails = "entity_details"; + @Inject EventDao eventDao; @Inject AccountDao accountDao; @Inject UserDao userDao; @@ -156,10 +163,10 @@ public class ActionEventUtils { // get the entity details for which ActionEvent is generated String entityType = null; String entityUuid = null; - UserContext context = UserContext.current(); + CallContext context = CallContext.current(); if (context != null) { - entityType = context.getEntityType(); - entityUuid = context.getEntityUUID(); + entityType = (String)context.getContextParameter(EntityType); + entityUuid = (String)context.getContextParameter(EntityUuid); } org.apache.cloudstack.framework.events.Event event = new org.apache.cloudstack.framework.events.Event( diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java index 23708f862e1..9bf52aadd4b 100644 --- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java +++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java @@ -31,11 +31,13 @@ import com.cloud.storage.dao.VolumeDetailsDao; import com.cloud.vm.NicDetailVO; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDetailDao; + import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; - import com.cloud.api.query.dao.ResourceTagJoinDao; import com.cloud.api.query.vo.ResourceTagJoinVO; import com.cloud.domain.Domain; @@ -64,7 +66,6 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; import com.cloud.utils.component.Manager; diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 42430bc92ca..f6e9a0ae56f 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -39,10 +39,12 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.acl.SecurityChecker.AccessType; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.PortableIp; import org.apache.cloudstack.region.PortableIpDao; import org.apache.cloudstack.region.PortableIpVO; import org.apache.cloudstack.region.Region; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -167,7 +169,6 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -712,8 +713,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L private IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); - long callerUserId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + long callerUserId = CallContext.current().getCallingUserId(); // check permissions _accountMgr.checkAccess(caller, null, false, ipOwner); @@ -768,7 +769,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L ex.addProxyObject(ApiDBUtils.findZoneById(zone.getId()).getUuid()); throw ex; } - UserContext.current().setEventDetails("Ip Id: " + ip.getId()); + CallContext.current().setEventDetails("Ip Id: " + ip.getId()); Ip ipAddress = ip.getAddress(); s_logger.debug("Got " + ipAddress + " to assign for account " + ipOwner.getId() + " in zone " + zone.getId()); @@ -874,7 +875,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L public IPAddressVO associateIPToGuestNetwork(long ipId, long networkId, boolean releaseOnFailure) throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = null; IPAddressVO ipToAssoc = _ipAddressDao.findById(ipId); @@ -888,7 +889,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L if (zone.getNetworkType() == NetworkType.Advanced) { if (network.getGuestType() == Network.GuestType.Shared) { if (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId())) { - _accountMgr.checkAccess(UserContext.current().getCaller(), AccessType.UseNetwork, false, network); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), AccessType.UseNetwork, false, network); } else { throw new InvalidParameterValueException("IP can be associated with guest network of 'shared' type only if " + "network services Source Nat, Static Nat, Port Forwarding, Load balancing, firewall are enabled in the network"); @@ -1002,7 +1003,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = null; Network network = _networksDao.findById(networkId); @@ -1025,7 +1026,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L if (zone.getNetworkType() == NetworkType.Advanced) { if (network.getGuestType() == Network.GuestType.Shared) { assert (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId())); - _accountMgr.checkAccess(UserContext.current().getCaller(), AccessType.UseNetwork, false, network); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), AccessType.UseNetwork, false, network); } } else { _accountMgr.checkAccess(caller, null, true, ipToAssoc); @@ -1984,7 +1985,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L // reapply all the firewall/staticNat/lb rules s_logger.debug("Reprogramming network " + network + " as a part of network implement"); - if (!reprogramNetworkRules(network.getId(), UserContext.current().getCaller(), network)) { + if (!reprogramNetworkRules(network.getId(), CallContext.current().getCallingAccount(), network)) { s_logger.warn("Failed to re-program the network as a part of network " + network + " implement"); // see DataCenterVO.java ResourceUnavailableException ex = new ResourceUnavailableException("Unable to apply network rules as a part of network " + network + " implement", DataCenter.class, network.getDataCenterId()); @@ -2655,7 +2656,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L } txn.commit(); - UserContext.current().setEventDetails("Network Id: " + network.getId()); + CallContext.current().setEventDetails("Network Id: " + network.getId()); return network; } @@ -3356,8 +3357,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L if ( createNetwork && requiredOfferings.get(0).getIsPersistent() ) { DataCenter zone = _dcDao.findById(zoneId); DeployDestination dest = new DeployDestination(zone, null, null, null); - Account callerAccount = UserContext.current().getCaller(); - UserVO callerUser = _userDao.findById(UserContext.current().getCallerUserId()); + Account callerAccount = CallContext.current().getCallingAccount(); + UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId()); Journal journal = new Journal.LogJournal("Implementing " + guestNetwork, s_logger); ReservationContext context = new ReservationContextImpl(UUID.randomUUID().toString(), journal, callerUser, callerAccount); s_logger.debug("Implementing network " + guestNetwork + " as a part of network provision for persistent network"); @@ -3559,7 +3560,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L public String allocateGuestIP(Account ipOwner, boolean isSystem, long zoneId, Long networkId, String requestedIp) throws InsufficientAddressCapacityException { String ipaddr = null; - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // check permissions Network network = _networksDao.findById(networkId); @@ -4176,8 +4177,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L Long networkId = ip.getAssociatedWithNetworkId(); if (networkId != null) { if (ip.getSystem()) { - UserContext ctx = UserContext.current(); - if (!disassociatePublicIpAddress(ip.getId(), ctx.getCallerUserId(), ctx.getCaller())) { + CallContext ctx = CallContext.current(); + if (!disassociatePublicIpAddress(ip.getId(), ctx.getCallingUserId(), ctx.getCallingAccount())) { s_logger.warn("Unable to release system ip address id=" + ip.getId()); success = false; } else { diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java index f8f604446a1..ccd23bff262 100755 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@ -18,8 +18,6 @@ package com.cloud.network; import java.net.Inet6Address; import java.net.InetAddress; -import java.net.InetAddress; -import java.net.Inet6Address; import java.net.UnknownHostException; import java.security.InvalidParameterException; import java.sql.PreparedStatement; @@ -41,31 +39,20 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.network.vpc.dao.VpcDao; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + import org.apache.cloudstack.acl.ControlledEntity.ACLType; -import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd; import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd; import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; -import org.apache.cloudstack.api.command.user.network.*; -import com.cloud.network.vpc.NetworkACL; -import com.cloud.network.vpc.dao.NetworkACLDao; -import org.apache.cloudstack.acl.ControlledEntity.ACLType; -import org.apache.cloudstack.acl.SecurityChecker.AccessType; -import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd; import org.apache.cloudstack.api.command.user.network.ListNetworksCmd; import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd; import org.apache.cloudstack.api.command.user.vm.ListNicsCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; - -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; -import org.apache.cloudstack.api.command.user.vm.ListNicsCmd; -import org.bouncycastle.util.IPAddress; import com.cloud.api.ApiDBUtils; import com.cloud.configuration.Config; @@ -133,13 +120,15 @@ import com.cloud.network.element.VpcVirtualRouterElement; import com.cloud.network.guru.NetworkGuru; import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; -import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.RulesManager; import com.cloud.network.rules.dao.PortForwardingRulesDao; +import com.cloud.network.vpc.NetworkACL; import com.cloud.network.vpc.PrivateIpVO; import com.cloud.network.vpc.Vpc; import com.cloud.network.vpc.VpcManager; +import com.cloud.network.vpc.dao.NetworkACLDao; import com.cloud.network.vpc.dao.PrivateIpDao; +import com.cloud.network.vpc.dao.VpcDao; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.dao.NetworkOfferingDao; @@ -156,11 +145,9 @@ 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.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; -import com.cloud.utils.AnnotationHelper; import com.cloud.utils.Journal; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -518,8 +505,8 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { public IpAddress allocateIP(Account ipOwner, long zoneId, Long networkId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); - long callerUserId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + long callerUserId = CallContext.current().getCallingUserId(); DataCenter zone = _configMgr.getZone(zoneId); if (networkId != null) { @@ -557,8 +544,8 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @ActionEvent(eventType = EventTypes.EVENT_PORTABLE_IP_ASSIGN, eventDescription = "allocating portable public Ip", create = true) public IpAddress allocatePortableIP(Account ipOwner, int regionId, Long zoneId, Long networkId, Long vpcId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); - long callerUserId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + long callerUserId = CallContext.current().getCallingUserId(); DataCenter zone = _configMgr.getZone(zoneId); if ((networkId == null && vpcId == null) && (networkId != null && vpcId != null)) { @@ -653,7 +640,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { throw new InvalidParameterValueException("Invalid network id is given"); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); //check whether the nic belongs to user vm. NicVO nicVO = _nicDao.findById(nicId); @@ -753,7 +740,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @Override @DB public boolean releaseSecondaryIpFromNic (long ipAddressId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); boolean success = false; // Verify input parameters @@ -865,8 +852,8 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @DB private boolean releaseIpAddressInternal(long ipAddressId) throws InsufficientAddressCapacityException { - Long userId = UserContext.current().getCallerUserId(); - Account caller = UserContext.current().getCaller(); + Long userId = CallContext.current().getCallingUserId(); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters IPAddressVO ipVO = _ipAddressDao.findById(ipAddressId); @@ -989,7 +976,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { String vlanId = cmd.getVlan(); String name = cmd.getNetworkName(); String displayText = cmd.getDisplayText(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long physicalNetworkId = cmd.getPhysicalNetworkId(); Long zoneId = cmd.getZoneId(); String aclTypeStr = cmd.getAclType(); @@ -1118,8 +1105,6 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { owner = caller; } - UserContext.current().setAccountId(owner.getAccountId()); - boolean ipv4 = true, ipv6 = false; if (startIP != null) { ipv4 = true; @@ -1340,7 +1325,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { return network; } DeployDestination dest = new DeployDestination(zone, null, null, null); - UserVO callerUser = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId()); Journal journal = new Journal.LogJournal("Implementing " + network, s_logger); ReservationContext context = new ReservationContextImpl(UUID.randomUUID().toString(), journal, callerUser, caller); s_logger.debug("Implementing network " + network + " as a part of network provision for persistent network"); @@ -1364,7 +1349,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { Long id = cmd.getId(); String keyword = cmd.getKeyword(); Long zoneId = cmd.getZoneId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long domainId = cmd.getDomainId(); String accountName = cmd.getAccountName(); String guestIpType = cmd.getGuestIpType(); @@ -1756,7 +1741,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @ActionEvent(eventType = EventTypes.EVENT_NETWORK_DELETE, eventDescription = "deleting network", async = true) public boolean deleteNetwork(long networkId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify network id NetworkVO network = _networksDao.findById(networkId); @@ -1780,7 +1765,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { // Perform permission check _accountMgr.checkAccess(caller, null, true, network); - User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); ReservationContext context = new ReservationContextImpl(null, null, callerUser, owner); return _networkMgr.destroyNetwork(networkId, context); @@ -1793,7 +1778,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { // This method restarts all network elements belonging to the network and re-applies all the rules Long networkId = cmd.getNetworkId(); - User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); Account callerAccount = _accountMgr.getActiveAccountById(callerUser.getAccountId()); // Check if network exists @@ -3476,7 +3461,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { throw new CloudRuntimeException("Provider is not deletable because there are active networks using this provider, please upgrade these networks to new network offerings"); } - User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); Account callerAccount = _accountMgr.getActiveAccountById(callerUser.getAccountId()); // shutdown the provider instances ReservationContext context = new ReservationContextImpl(null, null, callerUser, callerAccount); @@ -3968,7 +3953,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService { @Override public List listNics(ListNicsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long nicId = cmd.getNicId(); Long vmId = cmd.getVmId(); diff --git a/server/src/com/cloud/network/NetworkUsageManagerImpl.java b/server/src/com/cloud/network/NetworkUsageManagerImpl.java index 972d3ff1658..5df35c88279 100755 --- a/server/src/com/cloud/network/NetworkUsageManagerImpl.java +++ b/server/src/com/cloud/network/NetworkUsageManagerImpl.java @@ -73,11 +73,12 @@ import org.apache.cloudstack.api.command.admin.usage.AddTrafficMonitorCmd; import org.apache.cloudstack.api.command.admin.usage.DeleteTrafficMonitorCmd; import org.apache.cloudstack.api.command.admin.usage.ListTrafficMonitorsCmd; import org.apache.cloudstack.api.response.TrafficMonitorResponse; +import org.apache.cloudstack.context.CallContext; + import com.cloud.usage.UsageIPAddressVO; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.UserStatisticsVO; import com.cloud.user.dao.UserStatisticsDao; import com.cloud.utils.NumbersUtil; diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java index 247441e19cc..213ff6715ed 100644 --- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java @@ -43,6 +43,8 @@ import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScalePolicyCmd import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmGroupCmd; import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmProfileCmd; import org.apache.cloudstack.api.command.user.vm.DeployVMCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -80,7 +82,6 @@ import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; import com.cloud.utils.Pair; @@ -96,6 +97,7 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.Transaction; import com.cloud.utils.net.NetUtils; + import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -306,7 +308,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale public AutoScaleVmProfile createAutoScaleVmProfile(CreateAutoScaleVmProfileCmd cmd) { Account owner = _accountDao.findById(cmd.getAccountId()); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountMgr.checkAccess(caller, null, true, owner); long zoneId = cmd.getZoneId(); @@ -337,7 +339,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale ApiDispatcher.processParameters(new DeployVMCmd(), deployParams); if (autoscaleUserId == null) { - autoscaleUserId = UserContext.current().getCallerUserId(); + autoscaleUserId = CallContext.current().getCallingUserId(); } AutoScaleVmProfileVO profileVO = new AutoScaleVmProfileVO(cmd.getZoneId(), cmd.getDomainId(), cmd.getAccountId(), cmd.getServiceOfferingId(), cmd.getTemplateId(), cmd.getOtherDeployParams(), @@ -358,7 +360,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale Integer destroyVmGraceperiod = cmd.getDestroyVmGraceperiod(); - AutoScaleVmProfileVO vmProfile = getEntityInDatabase(UserContext.current().getCaller(), "Auto Scale Vm Profile", profileId, _autoScaleVmProfileDao); + AutoScaleVmProfileVO vmProfile = getEntityInDatabase(CallContext.current().getCallingAccount(), "Auto Scale Vm Profile", profileId, _autoScaleVmProfileDao); if (templateId != null) { vmProfile.setTemplateId(templateId); @@ -393,7 +395,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEVMPROFILE_DELETE, eventDescription = "deleting autoscale vm profile") public boolean deleteAutoScaleVmProfile(long id) { /* Check if entity is in database */ - getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Vm Profile", id, _autoScaleVmProfileDao); + getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Profile", id, _autoScaleVmProfileDao); if (_autoScaleVmGroupDao.isProfileInUse(id)) { throw new InvalidParameterValueException("Cannot delete AutoScale Vm Profile when it is in use by one more vm groups"); } @@ -459,7 +461,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale ControlledEntity[] sameOwnerEntities = conditions.toArray(new ControlledEntity[conditions.size() + 1]); sameOwnerEntities[sameOwnerEntities.length - 1] = autoScalePolicyVO; - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEntities); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, sameOwnerEntities); if (conditionIds.size() != conditions.size()) { // TODO report the condition id which could not be found @@ -516,7 +518,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEPOLICY_DELETE, eventDescription = "deleting autoscale policy") public boolean deleteAutoScalePolicy(long id) { /* Check if entity is in database */ - getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Policy", id, _autoScalePolicyDao); + getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Policy", id, _autoScalePolicyDao); if (_autoScaleVmGroupPolicyMapDao.isAutoScalePolicyInUse(id)) { throw new InvalidParameterValueException("Cannot delete AutoScale Policy when it is in use by one or more AutoScale Vm Groups"); @@ -543,7 +545,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale public void checkCallerAccess(String accountName, Long domainId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountDao.findActiveAccount(accountName, domainId); if (owner == null) { List idList = new ArrayList(); @@ -573,7 +575,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale boolean listAll = cmd.listAll(); long startIndex = cmd.getStartIndex(); long pageSizeVal = cmd.getPageSizeVal(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Ternary domainIdRecursiveListProject = new Ternary(domainId, isRecursive, null); @@ -654,7 +656,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale Integer duration = cmd.getDuration(); Integer quietTime = cmd.getQuietTime(); List conditionIds = cmd.getConditionIds(); - AutoScalePolicyVO policy = getEntityInDatabase(UserContext.current().getCaller(), "Auto Scale Policy", policyId, _autoScalePolicyDao); + AutoScalePolicyVO policy = getEntityInDatabase(CallContext.current().getCallingAccount(), "Auto Scale Policy", policyId, _autoScalePolicyDao); if (duration != null) { policy.setDuration(duration); @@ -697,7 +699,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale interval = NetUtils.DEFAULT_AUTOSCALE_POLICY_INTERVAL_TIME; } - LoadBalancerVO loadBalancer = getEntityInDatabase(UserContext.current().getCaller(), ApiConstants.LBID, cmd.getLbRuleId(), _lbDao); + LoadBalancerVO loadBalancer = getEntityInDatabase(CallContext.current().getCallingAccount(), ApiConstants.LBID, cmd.getLbRuleId(), _lbDao); Long zoneId = _ipAddressDao.findById(loadBalancer.getSourceIpAddressId()).getDataCenterId(); @@ -749,7 +751,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @DB @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEVMGROUP_DELETE, eventDescription = "deleting autoscale vm group") public boolean deleteAutoScaleVmGroup(long id) { - AutoScaleVmGroupVO autoScaleVmGroupVO = getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); + AutoScaleVmGroupVO autoScaleVmGroupVO = getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); if (autoScaleVmGroupVO.getState().equals(AutoScaleVmGroup.State_New)) { /* This condition is for handling failures during creation command */ @@ -880,15 +882,15 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale getAutoScalePolicies("scaledownpolicyid", currentScaleDownPolicyIds, counters, interval, false); policyIds.addAll(currentScaleDownPolicyIds); } - AutoScaleVmProfileVO profileVO = getEntityInDatabase(UserContext.current().getCaller(), ApiConstants.VMPROFILE_ID, vmGroup.getProfileId(), _autoScaleVmProfileDao); + AutoScaleVmProfileVO profileVO = getEntityInDatabase(CallContext.current().getCallingAccount(), ApiConstants.VMPROFILE_ID, vmGroup.getProfileId(), _autoScaleVmProfileDao); - LoadBalancerVO loadBalancer = getEntityInDatabase(UserContext.current().getCaller(), ApiConstants.LBID, vmGroup.getLoadBalancerId(), _lbDao); + LoadBalancerVO loadBalancer = getEntityInDatabase(CallContext.current().getCallingAccount(), ApiConstants.LBID, vmGroup.getLoadBalancerId(), _lbDao); validateAutoScaleCounters(loadBalancer.getNetworkId(), counters, profileVO.getCounterParams()); ControlledEntity[] sameOwnerEntities = policies.toArray(new ControlledEntity[policies.size() + 2]); sameOwnerEntities[sameOwnerEntities.length - 2] = loadBalancer; sameOwnerEntities[sameOwnerEntities.length - 1] = profileVO; - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEntities); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, sameOwnerEntities); final Transaction txn = Transaction.currentTxn(); txn.start(); @@ -917,7 +919,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale List scaleUpPolicyIds = cmd.getScaleUpPolicyIds(); List scaleDownPolicyIds = cmd.getScaleDownPolicyIds(); - AutoScaleVmGroupVO vmGroupVO = getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Vm Group", vmGroupId, _autoScaleVmGroupDao); + AutoScaleVmGroupVO vmGroupVO = getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Group", vmGroupId, _autoScaleVmGroupDao); if (!vmGroupVO.getState().equals(AutoScaleVmGroup.State_Disabled)) { throw new InvalidParameterValueException("An AutoScale Vm Group can be updated only when it is in disabled state"); @@ -947,7 +949,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @DB @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEVMGROUP_ENABLE, eventDescription = "enabling autoscale vm group") public AutoScaleVmGroup enableAutoScaleVmGroup(Long id) { - AutoScaleVmGroupVO vmGroup = getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); + AutoScaleVmGroupVO vmGroup = getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); boolean success = false; if (!vmGroup.getState().equals(AutoScaleVmGroup.State_Disabled)) { throw new InvalidParameterValueException("Only a AutoScale Vm Group which is in Disabled state can be enabled."); @@ -974,7 +976,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @ActionEvent(eventType = EventTypes.EVENT_AUTOSCALEVMGROUP_DISABLE, eventDescription = "disabling autoscale vm group") @DB public AutoScaleVmGroup disableAutoScaleVmGroup(Long id) { - AutoScaleVmGroupVO vmGroup = getEntityInDatabase(UserContext.current().getCaller(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); + AutoScaleVmGroupVO vmGroup = getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Group", id, _autoScaleVmGroupDao); boolean success = false; if (!vmGroup.getState().equals(AutoScaleVmGroup.State_Enabled)) { throw new InvalidParameterValueException("Only a AutoScale Vm Group which is in Enabled state can be disabled."); @@ -1016,7 +1018,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale s_logger.debug("Adding Counter " + name); counter = _counterDao.persist(new CounterVO(src, name, cmd.getValue())); - UserContext.current().setEventDetails(" Id: " + counter.getId() + " Name: " + name); + CallContext.current().setEventDetails(" Id: " + counter.getId() + " Name: " + name); return counter; } @@ -1046,7 +1048,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale condition = _conditionDao.persist(new ConditionVO(cid, threshold, cmd.getEntityOwnerId(), cmd.getDomainId(), op)); s_logger.info("Successfully created condition with Id: " + condition.getId()); - UserContext.current().setEventDetails(" Id: " + condition.getId()); + CallContext.current().setEventDetails(" Id: " + condition.getId()); return condition; } @@ -1128,7 +1130,7 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale @ActionEvent(eventType = EventTypes.EVENT_CONDITION_DELETE, eventDescription = "condition") public boolean deleteCondition(long conditionId) throws ResourceInUseException { /* Check if entity is in database */ - ConditionVO condition = getEntityInDatabase(UserContext.current().getCaller(), "Condition", conditionId, _conditionDao); + ConditionVO condition = getEntityInDatabase(CallContext.current().getCallingAccount(), "Condition", conditionId, _conditionDao); if (condition == null) { throw new InvalidParameterValueException("Unable to find Condition"); } diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java index d250a08d477..6fb9bb66abb 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -28,8 +28,12 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.api.command.user.firewall.ListEgressFirewallRulesCmd; + import com.cloud.network.dao.*; + import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -73,7 +77,6 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; @@ -147,7 +150,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, @Override public FirewallRule createEgressFirewallRule(FirewallRule rule) throws NetworkRuleConflictException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Network network = _networkDao.findById(rule.getNetworkId()); if (network.getGuestType() == Network.GuestType.Shared) { @@ -161,7 +164,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, @Override public FirewallRule createIngressFirewallRule(FirewallRule rule) throws NetworkRuleConflictException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long sourceIpAddressId = rule.getSourceIpAddressId(); return createFirewallRule(sourceIpAddressId, caller, rule.getXid(), rule.getSourcePortStart(), @@ -227,7 +230,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, if (!_firewallDao.setStateToAdd(newRule)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } - UserContext.current().setEventDetails("Rule Id: " + newRule.getId()); + CallContext.current().setEventDetails("Rule Id: " + newRule.getId()); txn.commit(); @@ -242,7 +245,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, Map tags = cmd.getTags(); FirewallRule.TrafficType trafficType = cmd.getTrafficType(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); if (ipId != null) { @@ -719,8 +722,8 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, @Override public boolean revokeFirewallRule(long ruleId, boolean apply) { - Account caller = UserContext.current().getCaller(); - long userId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + long userId = CallContext.current().getCallingUserId(); return revokeFirewallRule(ruleId, apply, caller, userId); } diff --git a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java index 87098f5049b..36ea6a5b359 100644 --- a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -22,8 +22,11 @@ import javax.ejb.Local; import javax.inject.Inject; import com.cloud.event.ActionEventUtils; + import org.apache.log4j.Logger; +import org.apache.cloudstack.context.CallContext; + import com.cloud.configuration.Config; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; @@ -47,7 +50,6 @@ import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.db.DB; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.Ip; @@ -140,7 +142,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { } implemented.setBroadcastUri(BroadcastDomainType.Vlan.toUri(vlanTag)); - ActionEventUtils.onCompletedActionEvent(UserContext.current().getCallerUserId(), config.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + config.getId(), 0); + ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), config.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + config.getId(), 0); } else { vlanTag = Integer.parseInt(config.getBroadcastUri().getHost()); implemented.setBroadcastUri(config.getBroadcastUri()); diff --git a/server/src/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/com/cloud/network/guru/GuestNetworkGuru.java index 89b0694e114..9adffa222e0 100755 --- a/server/src/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/GuestNetworkGuru.java @@ -28,8 +28,11 @@ import javax.inject.Inject; import com.cloud.event.ActionEventUtils; import com.cloud.server.ConfigurationServer; import com.cloud.utils.Pair; + import org.apache.log4j.Logger; +import org.apache.cloudstack.context.CallContext; + import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.dc.DataCenter; @@ -62,7 +65,6 @@ import com.cloud.network.dao.PhysicalNetworkDao; import com.cloud.network.dao.PhysicalNetworkVO; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; @@ -275,7 +277,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur "part of network " + network + " implement ", DataCenter.class, dcId); } implemented.setBroadcastUri(BroadcastDomainType.Vlan.toUri(vnet)); - ActionEventUtils.onCompletedActionEvent(UserContext.current().getCallerUserId(), network.getAccountId(), + ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), network.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: " + vnet + " Network Id: " + network.getId(), 0); } else { implemented.setBroadcastUri(network.getBroadcastUri()); @@ -415,7 +417,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur s_logger.debug("Releasing vnet for the network id=" + profile.getId()); _dcDao.releaseVnet(profile.getBroadcastUri().getHost(), profile.getDataCenterId(), profile.getPhysicalNetworkId(), profile.getAccountId(), profile.getReservationId()); - ActionEventUtils.onCompletedActionEvent(UserContext.current().getCallerUserId(), profile.getAccountId(), + ActionEventUtils.onCompletedActionEvent(CallContext.current().getCallingUserId(), profile.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_RELEASE, "Released Zone Vlan: " + profile.getBroadcastUri().getHost() + " for Network: " + profile.getId(), 0); } diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManager.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManager.java index a23d96f8aea..2218f7d3061 100644 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManager.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManager.java @@ -18,6 +18,8 @@ package com.cloud.network.lb; import java.util.List; +import org.apache.cloudstack.context.CallContext; + import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.lb.LoadBalancingRule.LbDestination; @@ -27,12 +29,11 @@ import com.cloud.network.rules.LbStickinessMethod; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.user.Account; -import com.cloud.user.UserContext; public interface LoadBalancingRulesManager extends LoadBalancingRulesService { LoadBalancer createPublicLoadBalancer(String xId, String name, String description, - int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, UserContext caller) + int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, CallContext caller) throws NetworkRuleConflictException; boolean removeAllLoadBalanacersForIp(long ipId, Account caller, long callerUserId); diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 6e0d0d77ed3..92f9417e386 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -36,6 +36,7 @@ import com.cloud.network.LBHealthCheckPolicyVO; import com.cloud.network.Network; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkModel; + import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBHealthCheckPolicyCmd; import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBStickinessPolicyCmd; @@ -45,8 +46,10 @@ import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRuleI import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRulesCmd; import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerRuleCmd; import org.apache.cloudstack.api.response.ServiceResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -134,7 +137,6 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; import com.cloud.uservm.UserVm; @@ -155,6 +157,7 @@ import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; + import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -516,7 +519,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @ActionEvent(eventType = EventTypes.EVENT_LB_STICKINESSPOLICY_CREATE, eventDescription = "create lb stickinesspolicy to load balancer", create = true) public StickinessPolicy createLBStickinessPolicy(CreateLBStickinessPolicyCmd cmd) throws NetworkRuleConflictException { - UserContext caller = UserContext.current(); + CallContext caller = CallContext.current(); /* Validation : check corresponding load balancer rule exist */ LoadBalancerVO loadBalancer = _lbDao.findById(cmd.getLbRuleId()); @@ -524,7 +527,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements throw new InvalidParameterValueException("Failed: LB rule id: " + cmd.getLbRuleId() + " not present "); } - _accountMgr.checkAccess(caller.getCaller(), null, true, loadBalancer); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, loadBalancer); if (loadBalancer.getState() == FirewallRule.State.Revoke) { throw new InvalidParameterValueException("Failed: LB rule id: " + cmd.getLbRuleId() + " is in deleting state: "); @@ -564,7 +567,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @DB @ActionEvent(eventType = EventTypes.EVENT_LB_HEALTHCHECKPOLICY_CREATE, eventDescription = "create load balancer health check to load balancer", create = true) public HealthCheckPolicy createLBHealthCheckPolicy(CreateLBHealthCheckPolicyCmd cmd) { - UserContext caller = UserContext.current(); + CallContext caller = CallContext.current(); /* * Validation of cmd Monitor interval must be greater than response @@ -584,7 +587,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements throw new InvalidParameterValueException("Failed: LB rule id: " + cmd.getLbRuleId() + " not present "); } - _accountMgr.checkAccess(caller.getCaller(), null, true, loadBalancer); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, loadBalancer); if (loadBalancer.getState() == FirewallRule.State.Revoke) { throw new InvalidParameterValueException("Failed: LB rule id: " + cmd.getLbRuleId() @@ -738,7 +741,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements public boolean deleteLBStickinessPolicy(long stickinessPolicyId, boolean apply) { boolean success = true; - UserContext caller = UserContext.current(); + CallContext caller = CallContext.current(); LBStickinessPolicyVO stickinessPolicy = _lb2stickinesspoliciesDao.findById(stickinessPolicyId); if (stickinessPolicy == null) { @@ -751,7 +754,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } long loadBalancerId = loadBalancer.getId(); FirewallRule.State backupState = loadBalancer.getState(); - _accountMgr.checkAccess(caller.getCaller(), null, true, loadBalancer); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, loadBalancer); if (apply) { if (loadBalancer.getState() == FirewallRule.State.Active) { @@ -796,7 +799,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements public boolean deleteLBHealthCheckPolicy(long healthCheckPolicyId, boolean apply) { boolean success = true; - UserContext caller = UserContext.current(); + CallContext caller = CallContext.current(); LBHealthCheckPolicyVO healthCheckPolicy = _lb2healthcheckDao.findById(healthCheckPolicyId); if (healthCheckPolicy == null) { @@ -809,7 +812,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } long loadBalancerId = loadBalancer.getId(); FirewallRule.State backupState = loadBalancer.getState(); - _accountMgr.checkAccess(caller.getCaller(), null, true, loadBalancer); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, loadBalancer); if (apply) { if (loadBalancer.getState() == FirewallRule.State.Active) { @@ -948,8 +951,8 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @DB @ActionEvent(eventType = EventTypes.EVENT_ASSIGN_TO_LOAD_BALANCER_RULE, eventDescription = "assigning to load balancer", async = true) public boolean assignToLoadBalancer(long loadBalancerId, List instanceIds) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId); if (loadBalancer == null) { @@ -1070,14 +1073,14 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } private boolean removeFromLoadBalancerInternal(long loadBalancerId, List instanceIds, boolean rollBack) { - UserContext caller = UserContext.current(); + CallContext caller = CallContext.current(); LoadBalancerVO loadBalancer = _lbDao.findById(Long.valueOf(loadBalancerId)); if (loadBalancer == null) { throw new InvalidParameterException("Invalid load balancer value: " + loadBalancerId); } - _accountMgr.checkAccess(caller.getCaller(), null, true, loadBalancer); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, loadBalancer); boolean success = false; FirewallRule.State backupState = loadBalancer.getState(); @@ -1174,8 +1177,8 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @Override @ActionEvent(eventType = EventTypes.EVENT_LOAD_BALANCER_DELETE, eventDescription = "deleting load balancer", async = true) public boolean deleteLoadBalancerRule(long loadBalancerId, boolean apply) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); LoadBalancerVO rule = _lbDao.findById(loadBalancerId); @@ -1184,7 +1187,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } _accountMgr.checkAccess(caller, null, true, rule); - boolean result = deleteLoadBalancerRule(loadBalancerId, apply, caller, ctx.getCallerUserId(), true); + boolean result = deleteLoadBalancerRule(loadBalancerId, apply, caller, ctx.getCallingUserId(), true); if (!result) { throw new CloudRuntimeException("Unable to remove load balancer rule " + loadBalancerId); } @@ -1352,7 +1355,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements + network); } - result = createPublicLoadBalancer(xId, name, description, srcPortStart, defPortStart, ipVO.getId(), protocol, algorithm, openFirewall, UserContext.current()); + result = createPublicLoadBalancer(xId, name, description, srcPortStart, defPortStart, ipVO.getId(), protocol, algorithm, openFirewall, CallContext.current()); } catch (Exception ex) { s_logger.warn("Failed to create load balancer due to ", ex); if (ex instanceof NetworkRuleConflictException) { @@ -1382,7 +1385,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @DB @Override public LoadBalancer createPublicLoadBalancer(String xId, String name, String description, - int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, UserContext caller) + int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, CallContext caller) throws NetworkRuleConflictException { if (!NetUtils.isValidPort(destPort)) { @@ -1412,7 +1415,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements throw ex; } - _accountMgr.checkAccess(caller.getCaller(), null, true, ipAddr); + _accountMgr.checkAccess(caller.getCallingAccount(), null, true, ipAddr); Long networkId = ipAddr.getAssociatedWithNetworkId(); @@ -1426,7 +1429,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements // verify that lb service is supported by the network isLbServiceSupportedInNetwork(networkId, Scheme.Public); - _firewallMgr.validateFirewallRule(caller.getCaller(), ipAddr, srcPort, srcPort, protocol, + _firewallMgr.validateFirewallRule(caller.getCallingAccount(), ipAddr, srcPort, srcPort, protocol, Purpose.LoadBalancing, FirewallRuleType.User, networkId, null); LoadBalancerVO newRule = new LoadBalancerVO(xId, name, description, @@ -1448,7 +1451,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements //create rule for all CIDRs if (openFirewall) { - _firewallMgr.createRuleForAllCidrs(sourceIpId, caller.getCaller(), srcPort, + _firewallMgr.createRuleForAllCidrs(sourceIpId, caller.getCallingAccount(), srcPort, srcPort, protocol, null, null, newRule.getId(), networkId); } @@ -1461,7 +1464,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements } s_logger.debug("Load balancer " + newRule.getId() + " for Ip address id=" + sourceIpId + ", public port " + srcPort + ", private port " + destPort + " is added successfully."); - UserContext.current().setEventDetails("Load balancer Id: " + newRule.getId()); + CallContext.current().setEventDetails("Load balancer Id: " + newRule.getId()); UsageEventUtils.publishUsageEvent(EventTypes.EVENT_LOAD_BALANCER_CREATE, ipAddr.getAllocatedToAccountId(), ipAddr.getDataCenterId(), newRule.getId(), null, LoadBalancingRule.class.getName(), newRule.getUuid()); @@ -1669,8 +1672,8 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements boolean success = true; if (ip.getSystem()) { s_logger.debug("Releasing system ip address " + lb.getSourceIpAddressId() + " as a part of delete lb rule"); - if (!_networkMgr.disassociatePublicIpAddress(lb.getSourceIpAddressId(), UserContext.current() - .getCallerUserId(), UserContext.current().getCaller())) { + if (!_networkMgr.disassociatePublicIpAddress(lb.getSourceIpAddressId(), CallContext.current() + .getCallingUserId(), CallContext.current().getCallingAccount())) { s_logger.warn("Unable to release system ip address id=" + lb.getSourceIpAddressId() + " as a part of delete lb rule"); success = false; @@ -1762,7 +1765,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @Override @ActionEvent(eventType = EventTypes.EVENT_LOAD_BALANCER_UPDATE, eventDescription = "updating load balancer", async = true) public LoadBalancer updateLoadBalancerRule(UpdateLoadBalancerRuleCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long lbRuleId = cmd.getId(); String name = cmd.getLoadBalancerName(); String description = cmd.getDescription(); @@ -1834,7 +1837,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @Override public List listLoadBalancerInstances(ListLoadBalancerRuleInstancesCmd cmd) throws PermissionDeniedException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long loadBalancerId = cmd.getId(); Boolean applied = cmd.isApplied(); @@ -1900,7 +1903,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @Override public List searchForLBStickinessPolicies(ListLBStickinessPoliciesCmd cmd) throws PermissionDeniedException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long loadBalancerId = cmd.getLbRuleId(); LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId); if (loadBalancer == null) { @@ -1917,7 +1920,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements @Override public List searchForLBHealthCheckPolicies(ListLBHealthCheckPoliciesCmd cmd) throws PermissionDeniedException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long loadBalancerId = cmd.getLbRuleId(); LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId); if (loadBalancer == null) { @@ -1939,7 +1942,7 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements Long networkId = cmd.getNetworkId(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 7bd28644f0f..0a67cff9a7c 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -44,6 +44,8 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.context.ServerContexts; import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager.OnError; @@ -205,7 +207,6 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.UserStatisticsVO; import com.cloud.user.UserStatsLogVO; import com.cloud.user.UserVO; @@ -253,13 +254,12 @@ import com.cloud.vm.dao.NicIpAliasVO; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.UserVmDetailsDao; import com.cloud.vm.dao.VMInstanceDao; - /** * VirtualNetworkApplianceManagerImpl manages the different types of virtual network appliances available in the Cloud Stack. */ @Component @Local(value = { VirtualNetworkApplianceManager.class, VirtualNetworkApplianceService.class }) -public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements VirtualNetworkApplianceManager, VirtualNetworkApplianceService, +public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements VirtualNetworkApplianceManager, VirtualNetworkApplianceService, VirtualMachineGuru, Listener { private static final Logger s_logger = Logger.getLogger(VirtualNetworkApplianceManagerImpl.class); @@ -431,7 +431,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V public VirtualRouter upgradeRouter(UpgradeRouterCmd cmd) { Long routerId = cmd.getId(); Long serviceOfferingId = cmd.getServiceOfferingId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); DomainRouterVO router = _routerDao.findById(routerId); if (router == null) { @@ -467,7 +467,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V // Check that the service offering being upgraded to has the same storage pool preference as the VM's current service // offering if (currentServiceOffering.getUseLocalStorage() != newServiceOffering.getUseLocalStorage()) { - throw new InvalidParameterValueException("Can't upgrade, due to new local storage status : " + + throw new InvalidParameterValueException("Can't upgrade, due to new local storage status : " + newServiceOffering.getUseLocalStorage() + " is different from " + "curruent local storage status: " + currentServiceOffering.getUseLocalStorage()); } @@ -541,8 +541,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override @ActionEvent(eventType = EventTypes.EVENT_ROUTER_STOP, eventDescription = "stopping router Vm", async = true) public VirtualRouter stopRouter(long routerId, boolean forced) throws ResourceUnavailableException, ConcurrentOperationException { - UserContext context = UserContext.current(); - Account account = context.getCaller(); + CallContext context = CallContext.current(); + Account account = context.getCallingAccount(); // verify parameters DomainRouterVO router = _routerDao.findById(routerId); @@ -552,7 +552,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V _accountMgr.checkAccess(account, null, true, router); - UserVO user = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO user = _userDao.findById(CallContext.current().getCallingUserId()); VirtualRouter virtualRouter = stop(router, forced, user, account); if(virtualRouter == null){ @@ -602,9 +602,9 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override @ActionEvent(eventType = EventTypes.EVENT_ROUTER_REBOOT, eventDescription = "rebooting router Vm", async = true) - public VirtualRouter rebootRouter(long routerId, boolean reprogramNetwork) throws ConcurrentOperationException, + public VirtualRouter rebootRouter(long routerId, boolean reprogramNetwork) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // verify parameters DomainRouterVO router = _routerDao.findById(routerId); @@ -621,7 +621,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V DataCenter.class, router.getDataCenterId()); } - UserVO user = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO user = _userDao.findById(CallContext.current().getCallingUserId()); s_logger.debug("Stopping and starting router " + router + " as a part of router reboot"); if (stop(router, false, user, caller) != null) { @@ -666,11 +666,11 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V value = configs.get("router.check.poolsize"); _rvrStatusUpdatePoolSize = NumbersUtil.parseInt(value, 10); - /* + /* * We assume that one thread can handle 20 requests in 1 minute in normal situation, so here we give the queue size up to 50 minutes. * It's mostly for buffer, since each time CheckRouterTask running, it would add all the redundant networks in the queue immediately */ - _vrUpdateQueue = new LinkedBlockingQueue(_rvrStatusUpdatePoolSize * 1000); + _vrUpdateQueue = new LinkedBlockingQueue(_rvrStatusUpdatePoolSize * 1000); _rvrStatusUpdateExecutor = Executors.newFixedThreadPool(_rvrStatusUpdatePoolSize, new NamedThreadFactory("RedundantRouterStatusMonitor")); @@ -796,7 +796,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V return VirtualMachineName.getRouterId(vmName); } - private VmDataCommand generateVmDataCommand(VirtualRouter router, String vmPrivateIpAddress, String userData, + private VmDataCommand generateVmDataCommand(VirtualRouter router, String vmPrivateIpAddress, String userData, String serviceOffering, String zoneName, String guestIpAddress, String vmName, String vmInstanceName, long vmId, String vmUuid, String publicKey, long guestNetworkId) { VmDataCommand cmd = new VmDataCommand(vmPrivateIpAddress, vmName, _networkModel.getExecuteInSeqNtwkElmtCmd()); @@ -860,6 +860,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override public void run() { + ServerContexts.registerSystemContext(); try{ final List routers = _routerDao.listByStateAndNetworkType(State.Running, GuestType.Isolated, mgmtSrvrId); s_logger.debug("Found " + routers.size() + " running routers. "); @@ -873,7 +874,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V for (Nic routerNic : routerNics) { Network network = _networkModel.getNetwork(routerNic.getNetworkId()); //Send network usage command for public nic in VPC VR - //Send network usage command for isolated guest nic of non VPC VR + //Send network usage command for isolated guest nic of non VPC VR if ((forVpc && network.getTrafficType() == TrafficType.Public) || (!forVpc && network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Isolated)) { final NetworkUsageCommand usageCmd = new NetworkUsageCommand(privateIP, router.getHostName(), forVpc, routerNic.getIp4Address()); @@ -957,6 +958,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } catch (Exception e) { s_logger.warn("Error while collecting network stats", e); + } finally { + ServerContexts.unregisterSystemContext(); } } } @@ -986,12 +989,12 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V List updatedStats = _userStatsDao.listUpdatedStats(); Date updatedTime = new Date(); for(UserStatisticsVO stat : updatedStats){ - //update agg bytes + //update agg bytes stat.setAggBytesReceived(stat.getCurrentBytesReceived() + stat.getNetBytesReceived()); stat.setAggBytesSent(stat.getCurrentBytesSent() + stat.getNetBytesSent()); _userStatsDao.update(stat.getId(), stat); //insert into op_user_stats_log - UserStatsLogVO statsLog = new UserStatsLogVO(stat.getId(), stat.getNetBytesReceived(), stat.getNetBytesSent(), stat.getCurrentBytesReceived(), + UserStatsLogVO statsLog = new UserStatsLogVO(stat.getId(), stat.getNetBytesReceived(), stat.getNetBytesSent(), stat.getCurrentBytesReceived(), stat.getCurrentBytesSent(), stat.getAggBytesReceived(), stat.getAggBytesSent(), updatedTime); _userStatsLogDao.persist(statsLog); } @@ -1083,7 +1086,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if (oldState != conn.getState()) { String title = "Site-to-site Vpn Connection to " + gw.getName() + " just switch from " + oldState + " to " + conn.getState(); - String context = "Site-to-site Vpn Connection to " + gw.getName() + " on router " + router.getHostName() + + String context = "Site-to-site Vpn Connection to " + gw.getName() + " on router " + router.getHostName() + "(id: " + router.getId() + ") " + " just switch from " + oldState + " to " + conn.getState(); s_logger.info(context); _alertMgr.sendAlert(AlertManager.ALERT_TYPE_DOMAIN_ROUTER, @@ -1168,8 +1171,6 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V //Ensure router status is update to date before execute this function. The function would try best to recover all routers except MASTER protected void recoverRedundantNetwork(DomainRouterVO masterRouter, DomainRouterVO backupRouter) { - UserContext context = UserContext.current(); - context.setAccountId(1); if (masterRouter.getState() == State.Running && backupRouter.getState() == State.Running) { HostVO masterHost = _hostDao.findById(masterRouter.getHostId()); HostVO backupHost = _hostDao.findById(backupRouter.getHostId()); @@ -1281,45 +1282,49 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override public void run() { - while (true) { + ServerContexts.registerSystemContext(); try { - Long networkId = _vrUpdateQueue.take(); - List routers = _routerDao.listByNetworkAndRole(networkId, Role.VIRTUAL_ROUTER); - - if (routers.size() != 2) { - continue; + while (true) { + try { + Long networkId = _vrUpdateQueue.take(); // This is a blocking call so this thread won't run all the time if no work item in queue. + List routers = _routerDao.listByNetworkAndRole(networkId, Role.VIRTUAL_ROUTER); + + if (routers.size() != 2) { + continue; + } + /* + * We update the router pair which the lower id router owned by this mgmt server, in order + * to prevent duplicate update of router status from cluster mgmt servers + */ + DomainRouterVO router0 = routers.get(0); + DomainRouterVO router1 = routers.get(1); + DomainRouterVO router = router0; + if ((router0.getId() < router1.getId()) && router0.getHostId() != null) { + router = router0; + } else { + router = router1; + } + if (router.getHostId() == null) { + s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to can't find host"); + continue; + } + HostVO host = _hostDao.findById(router.getHostId()); + if (host == null || host.getManagementServerId() == null || + host.getManagementServerId() != ManagementServerNode.getManagementServerId()) { + s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to not belong to this mgmt server"); + continue; + } + updateRoutersRedundantState(routers); + checkDuplicateMaster(routers); + checkSanity(routers); + } catch (Exception ex) { + s_logger.error("Fail to complete the RvRStatusUpdateTask! ", ex); } - /* - * We update the router pair which the lower id router owned by this mgmt server, in order - * to prevent duplicate update of router status from cluster mgmt servers - */ - DomainRouterVO router0 = routers.get(0); - DomainRouterVO router1 = routers.get(1); - DomainRouterVO router = router0; - if ((router0.getId() < router1.getId()) && router0.getHostId() != null) { - router = router0; - } else { - router = router1; - } - if (router.getHostId() == null) { - s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to can't find host"); - continue; - } - HostVO host = _hostDao.findById(router.getHostId()); - if (host == null || host.getManagementServerId() == null || - host.getManagementServerId() != ManagementServerNode.getManagementServerId()) { - s_logger.debug("Skip router pair (" + router0.getInstanceName() + "," + router1.getInstanceName() + ") due to not belong to this mgmt server"); - continue; - } - updateRoutersRedundantState(routers); - checkDuplicateMaster(routers); - checkSanity(routers); - } catch (Exception ex) { - s_logger.error("Fail to complete the RvRStatusUpdateTask! ", ex); } + } finally { + ServerContexts.unregisterSystemContext(); } } - } protected class CheckRouterTask implements Runnable { @@ -1329,6 +1334,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override public void run() { + ServerContexts.registerSystemContext(); try { final List routers = _routerDao.listIsolatedByHostId(null); s_logger.debug("Found " + routers.size() + " routers to update status. "); @@ -1345,6 +1351,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } catch (Exception ex) { s_logger.error("Fail to complete the CheckRouterTask! ", ex); + } finally { + ServerContexts.unregisterSystemContext(); } } } @@ -1402,7 +1410,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V for (HostVO h : hosts) { if (h.getStatus() == Status.Up) { - s_logger.debug("Pick up host that has hypervisor type " + h.getHypervisorType() + " in cluster " + + s_logger.debug("Pick up host that has hypervisor type " + h.getHypervisorType() + " in cluster " + cv.getId() + " to start domain router for OVM"); return h.getHypervisorType(); } @@ -1419,7 +1427,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @DB protected List findOrDeployVirtualRouterInGuestNetwork(Network guestNetwork, DeployDestination dest, Account owner, - boolean isRedundant, Map params) throws ConcurrentOperationException, + boolean isRedundant, Map params) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { List routers = new ArrayList(); @@ -1642,9 +1650,9 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V offerHA = false; } - router = new DomainRouterVO(id, routerOffering.getId(), vrProvider.getId(), + router = new DomainRouterVO(id, routerOffering.getId(), vrProvider.getId(), VirtualMachineName.getRouterName(id, _instance), template.getId(), template.getHypervisorType(), - template.getGuestOSId(), owner.getDomainId(), owner.getId(), isRedundant, 0, false, + template.getGuestOSId(), owner.getDomainId(), owner.getId(), isRedundant, 0, false, RedundantState.UNKNOWN, offerHA, false, vpcId); router.setRole(Role.VIRTUAL_ROUTER); router = _itMgr.allocate(router, template, routerOffering, networks, plan, null, owner); @@ -1687,7 +1695,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } - protected List getHypervisors(DeployDestination dest, DeploymentPlan plan, + protected List getHypervisors(DeployDestination dest, DeploymentPlan plan, List supportedHypervisors) throws InsufficientServerCapacityException { List hypervisors = new ArrayList(); @@ -1758,7 +1766,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) { defaultNetworkStartIp = startIp; } else if (s_logger.isDebugEnabled()){ - s_logger.debug("First ipv4 " + startIp + " in network id=" + guestNetwork.getId() + + s_logger.debug("First ipv4 " + startIp + " in network id=" + guestNetwork.getId() + " is already allocated, can't use it for domain router; will get random ip address from the range"); } } @@ -1767,13 +1775,13 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if (guestNetwork.getIp6Cidr() != null) { if (placeholder != null && placeholder.getIp6Address() != null) { s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network " + guestNetwork); - defaultNetworkStartIpv6 = placeholder.getIp6Address(); + defaultNetworkStartIpv6 = placeholder.getIp6Address(); } else { String startIpv6 = _networkModel.getStartIpv6Address(guestNetwork.getId()); if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(guestNetwork.getId(), startIpv6) == null) { defaultNetworkStartIpv6 = startIpv6; } else if (s_logger.isDebugEnabled()){ - s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + guestNetwork.getId() + + s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + guestNetwork.getId() + " is already allocated, can't use it for domain router; will get random ipv6 address from the range"); } } @@ -1842,7 +1850,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } - protected Pair> getDeploymentPlanAndRouters(boolean isPodBased, + protected Pair> getDeploymentPlanAndRouters(boolean isPodBased, DeployDestination dest, long guestNetworkId) { long dcId = dest.getDataCenter().getId(); List routers = null; @@ -1865,7 +1873,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } - private DomainRouterVO startVirtualRouter(DomainRouterVO router, User user, Account caller, Map params) + private DomainRouterVO startVirtualRouter(DomainRouterVO router, User user, Account caller, Map params) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { @@ -1908,7 +1916,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } if (routerToBeAvoid == null) { - return this.start(router, user, caller, params, null); + return this.start(router, user, caller, params, null); } // We would try best to deploy the router to another place int retryIndex = 5; @@ -1945,7 +1953,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override - public List deployVirtualRouterInGuestNetwork(Network guestNetwork, DeployDestination dest, Account owner, + public List deployVirtualRouterInGuestNetwork(Network guestNetwork, DeployDestination dest, Account owner, Map params, boolean isRedundant) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { @@ -1985,7 +1993,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override - public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, + public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) { boolean dnsProvided = true; @@ -2048,7 +2056,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V // DOMR control command is sent over management server in VMware if (dest.getHost().getHypervisorType() == HypervisorType.VMware) { if (s_logger.isInfoEnabled()) { - s_logger.info("Check if we need to add management server explicit route to DomR. pod cidr: " + s_logger.info("Check if we need to add management server explicit route to DomR. pod cidr: " + dest.getPod().getCidrAddress() + "/" + dest.getPod().getCidrSize() + ", pod gateway: " + dest.getPod().getGateway() + ", management host: " + _mgmt_host); } @@ -2106,7 +2114,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V type = "router"; if (_disable_rp_filter) { rpFilter=" disable_rp_filter=true"; - } + } } if (_disable_rp_filter) { @@ -2124,8 +2132,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V buf.append(" extra_pubnics=" + _routerExtraPublicNics); } - /* If virtual router didn't provide DNS service but provide DHCP service, we need to override the DHCP response - * to return DNS server rather than + /* If virtual router didn't provide DNS service but provide DHCP service, we need to override the DHCP response + * to return DNS server rather than * virtual router itself. */ if (dnsProvided || dhcpProvided) { if (defaultDns1 != null) { @@ -2161,7 +2169,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } - protected StringBuilder createGuestBootLoadArgs(NicProfile guestNic, String defaultDns1, + protected StringBuilder createGuestBootLoadArgs(NicProfile guestNic, String defaultDns1, String defaultDns2, DomainRouterVO router) { long guestNetworkId = guestNic.getNetworkId(); NetworkVO guestNetwork = _networkDao.findById(guestNetworkId); @@ -2203,7 +2211,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if (cidr != null) { dhcpRange = NetUtils.getIpRangeStartIpFromCidr(cidr, cidrSize); } - } + } } else if (dc.getNetworkType() == NetworkType.Advanced) { String cidr = guestNetwork.getCidr(); if (cidr != null) { @@ -2268,7 +2276,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override - public boolean finalizeDeployment(Commands cmds, VirtualMachineProfile profile, + public boolean finalizeDeployment(Commands cmds, VirtualMachineProfile profile, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException { DomainRouterVO router = profile.getVirtualMachine(); @@ -2303,7 +2311,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V // restart network if restartNetwork = false is not specified in profile parameters boolean reprogramGuestNtwks = true; - if (profile.getParameter(Param.ReProgramGuestNetworks) != null + if (profile.getParameter(Param.ReProgramGuestNetworks) != null && (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) { reprogramGuestNtwks = false; } @@ -2509,7 +2517,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } - protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter router, Provider provider, + protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter router, Provider provider, Long guestNetworkId, Map vlanMacAddress) { ArrayList publicIps = getPublicIpsToApply(router, provider, guestNetworkId); @@ -2523,7 +2531,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } - protected ArrayList getPublicIpsToApply(VirtualRouter router, Provider provider, + protected ArrayList getPublicIpsToApply(VirtualRouter router, Provider provider, Long guestNetworkId, com.cloud.network.IpAddress.State... skipInStates) { long ownerId = router.getAccountId(); final List userIps = _networkModel.listPublicIpsAssignedToGuestNtwk(ownerId, guestNetworkId, null); @@ -2642,7 +2650,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override - public boolean startRemoteAccessVpn(Network network, RemoteAccessVpn vpn, List routers) + public boolean startRemoteAccessVpn(Network network, RemoteAccessVpn vpn, List routers) throws ResourceUnavailableException { if (routers == null || routers.isEmpty()) { s_logger.warn("Failed to start remote access VPN: no router found for account and zone"); @@ -2653,7 +2661,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V for (VirtualRouter router : routers) { if (router.getState() != State.Running) { s_logger.warn("Failed to start remote access VPN: router not in right state " + router.getState()); - throw new ResourceUnavailableException("Failed to start remote access VPN: router not in right state " + throw new ResourceUnavailableException("Failed to start remote access VPN: router not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); } @@ -2668,16 +2676,16 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } Answer answer = cmds.getAnswer("users"); if (!answer.getResult()) { - s_logger.error("Unable to start vpn: unable add users to vpn in zone " + router.getDataCenterId() + s_logger.error("Unable to start vpn: unable add users to vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + router.getInstanceName() + " due to " + answer.getDetails()); - throw new ResourceUnavailableException("Unable to start vpn: Unable to add users to vpn in zone " + + throw new ResourceUnavailableException("Unable to start vpn: Unable to add users to vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, router.getDataCenterId()); } answer = cmds.getAnswer("startVpn"); if (!answer.getResult()) { - s_logger.error("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + + s_logger.error("Unable to start vpn in zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " + router.getInstanceName() + " due to " + answer.getDetails()); throw new ResourceUnavailableException("Unable to start vpn in zone " + router.getDataCenterId() @@ -2691,7 +2699,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override - public boolean deleteRemoteAccessVpn(Network network, RemoteAccessVpn vpn, List routers) + public boolean deleteRemoteAccessVpn(Network network, RemoteAccessVpn vpn, List routers) throws ResourceUnavailableException { if (routers == null || routers.isEmpty()) { s_logger.warn("Failed to delete remote access VPN: no router found for account and zone"); @@ -2704,7 +2712,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V Commands cmds = new Commands(OnError.Continue); IpAddress ip = _networkModel.getIp(vpn.getServerAddressId()); - RemoteAccessVpnCfgCommand removeVpnCmd = new RemoteAccessVpnCfgCommand(false, ip.getAddress().addr(), + RemoteAccessVpnCfgCommand removeVpnCmd = new RemoteAccessVpnCfgCommand(false, ip.getAddress().addr(), vpn.getLocalIp(), vpn.getIpRange(), vpn.getIpsecPresharedKey()); removeVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); removeVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(network.getId(), router.getId())); @@ -2721,7 +2729,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V continue; } else { s_logger.warn("Failed to delete remote access VPN: domR " + router + " is not in right state " + router.getState()); - throw new ResourceUnavailableException("Failed to delete remote access VPN: domR is not in right state " + + throw new ResourceUnavailableException("Failed to delete remote access VPN: domR is not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); } } @@ -2730,7 +2738,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } - private DomainRouterVO start(DomainRouterVO router, User user, Account caller, Map params, DeploymentPlan planToDeploy) + private DomainRouterVO start(DomainRouterVO router, User user, Account caller, Map params, DeploymentPlan planToDeploy) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { s_logger.debug("Starting router " + router); @@ -2807,7 +2815,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V try { if (network.getTrafficType() == TrafficType.Guest && network.getGuestType() == GuestType.Shared) { Pod pod = _podDao.findById(vm.getPodIdToDeployIn()); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List vlanList = _vlanDao.listVlansByNetworkIdAndGateway(network.getId(), nic.getGateway()); List vlanDbIdList = new ArrayList(); for (VlanVO vlan : vlanList) { @@ -2829,7 +2837,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V return false; } //this means we did not create a ip alis on the router. - NicIpAliasVO alias = new NicIpAliasVO(domr_guest_nic.getId(), routerAliasIp, router.getId(), UserContext.current().getAccountId(), network.getDomainId(), nic.getNetworkId(),nic.getGateway(), nic.getNetmask()); + NicIpAliasVO alias = new NicIpAliasVO(domr_guest_nic.getId(), routerAliasIp, router.getId(), CallContext.current().getCallingAccountId(), network.getDomainId(), nic.getNetworkId(),nic.getGateway(), nic.getNetmask()); alias.setAliasCount((routerPublicIP.getIpMacAddress())); _nicIpAliasDao.persist(alias); List ipaliasTo = new ArrayList(); @@ -2894,7 +2902,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override - public boolean applyDhcpEntry(Network network, final NicProfile nic, VirtualMachineProfile profile, + public boolean applyDhcpEntry(Network network, final NicProfile nic, VirtualMachineProfile profile, DeployDestination dest, List routers) throws ResourceUnavailableException { if(s_logger.isTraceEnabled()) { @@ -2908,7 +2916,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V boolean podLevelException = false; //for user vm in Basic zone we should try to re-deploy vm in a diff pod if it fails to deploy in original pod; so throwing exception with Pod scope - if (isZoneBasic && podId != null && updatedProfile.getVirtualMachine().getType() == VirtualMachine.Type.User + if (isZoneBasic && podId != null && updatedProfile.getVirtualMachine().getType() == VirtualMachine.Type.User && network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Shared) { podLevelException = true; } @@ -2982,7 +2990,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V boolean podLevelException = false; //for user vm in Basic zone we should try to re-deploy vm in a diff pod if it fails to deploy in original pod; so throwing exception with Pod scope - if (isZoneBasic && podId != null && updatedProfile.getVirtualMachine().getType() == VirtualMachine.Type.User + if (isZoneBasic && podId != null && updatedProfile.getVirtualMachine().getType() == VirtualMachine.Type.User && network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Shared) { podLevelException = true; } @@ -3014,7 +3022,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V public String[] applyVpnUsers(Network network, List users, List routers) throws ResourceUnavailableException { if (routers == null || routers.isEmpty()) { s_logger.warn("Failed to add/remove VPN users: no router found for account and zone"); - throw new ResourceUnavailableException("Unable to assign ip addresses, domR doesn't exist for network " + + throw new ResourceUnavailableException("Unable to assign ip addresses, domR doesn't exist for network " + network.getId(), DataCenter.class, network.getDataCenterId()); } @@ -3023,7 +3031,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V for (DomainRouterVO router : routers) { if (router.getState() != State.Running) { s_logger.warn("Failed to add/remove VPN users: router not in running state"); - throw new ResourceUnavailableException("Unable to assign ip addresses, domR is not in right state " + + throw new ResourceUnavailableException("Unable to assign ip addresses, domR is not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); } @@ -3088,10 +3096,10 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } @Override - public VirtualRouter startRouter(long routerId, boolean reprogramNetwork) throws ResourceUnavailableException, + public VirtualRouter startRouter(long routerId, boolean reprogramNetwork) throws ResourceUnavailableException, InsufficientCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); - User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + Account caller = CallContext.current().getCallingAccount(); + User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); // verify parameters DomainRouterVO router = _routerDao.findById(routerId); @@ -3127,7 +3135,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V return router; } - UserVO user = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO user = _userDao.findById(CallContext.current().getCallingUserId()); Map params = new HashMap(); if (reprogramNetwork) { params.put(Param.ReProgramGuestNetworks, true); @@ -3209,7 +3217,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V vifMacAddress = ipAddr.getMacAddress(); } - IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, + IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, sourceNat, vlanId, vlanGateway, vlanNetmask, vifMacAddress, networkRate, ipAddr.isOneToOneNat()); ip.setTrafficType(network.getTrafficType()); @@ -3307,13 +3315,13 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V Network guestNetwork = _networkModel.getNetwork(guestNetworkId); Nic nic = _nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), router.getId()); - NicProfile nicProfile = new NicProfile(nic, guestNetwork, nic.getBroadcastUri(), nic.getIsolationUri(), - _networkModel.getNetworkRate(guestNetwork.getId(), router.getId()), - _networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), + NicProfile nicProfile = new NicProfile(nic, guestNetwork, nic.getBroadcastUri(), nic.getIsolationUri(), + _networkModel.getNetworkRate(guestNetwork.getId(), router.getId()), + _networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), _networkModel.getNetworkTag(router.getHypervisorType(), guestNetwork)); - LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs,routerPublicIp, - getRouterIpInNetwork(guestNetworkId, router.getId()),router.getPrivateIpAddress(), + LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs,routerPublicIp, + getRouterIpInNetwork(guestNetworkId, router.getId()),router.getPrivateIpAddress(), _itMgr.toNicTO(nicProfile, router.getHypervisorType()), router.getVpcId()); cmd.lbStatsVisibility = _configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key()); @@ -3350,7 +3358,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V IpAddress ip = _networkModel.getIp(vpn.getServerAddressId()); - RemoteAccessVpnCfgCommand startVpnCmd = new RemoteAccessVpnCfgCommand(true, ip.getAddress().addr(), + RemoteAccessVpnCfgCommand startVpnCmd = new RemoteAccessVpnCfgCommand(true, ip.getAddress().addr(), vpn.getLocalIp(), vpn.getIpRange(), vpn.getIpsecPresharedKey()); startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId())); startVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(vpn.getNetworkId(), router.getId())); @@ -3369,7 +3377,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V // password should be set only on default network element if (password != null && nic.isDefaultNic()) { String encodedPassword = PasswordGenerator.rot13(password); - // We would unset password for BACKUP router in the RvR, to prevent user from accidently reset the + // We would unset password for BACKUP router in the RvR, to prevent user from accidently reset the // password again after BACKUP become MASTER if (router.getIsRedundantRouter() && router.getRedundantState() != RedundantState.MASTER) { encodedPassword = PasswordGenerator.rot13("saved_password"); @@ -3663,7 +3671,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp); lbRules.add(loadBalancing); } - return sendLBRules(router, lbRules, network.getId()); + return sendLBRules(router, lbRules, network.getId()); } }); } @@ -3756,7 +3764,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V boolean execute(Network network, VirtualRouter router) throws ResourceUnavailableException; } - protected boolean applyRules(Network network, List routers, String typeString, + protected boolean applyRules(Network network, List routers, String typeString, boolean isPodLevelException, Long podId, boolean failWhenDisconnect, RuleApplier applier) throws ResourceUnavailableException { if (routers == null || routers.isEmpty()) { s_logger.warn("Unable to apply " + typeString + ", virtual router doesn't exist in the network " + network.getId()); @@ -3779,11 +3787,11 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if (router.isStopPending()) { if (_hostDao.findById(router.getHostId()).getStatus() == Status.Up) { - throw new ResourceUnavailableException("Unable to process due to the stop pending router " + + throw new ResourceUnavailableException("Unable to process due to the stop pending router " + router.getInstanceName() + " haven't been stopped after it's host coming back!", DataCenter.class, router.getDataCenterId()); } - s_logger.debug("Router " + router.getInstanceName() + " is stop pending, so not sending apply " + + s_logger.debug("Router " + router.getInstanceName() + " is stop pending, so not sending apply " + typeString + " commands to the backend"); continue; } @@ -3805,15 +3813,15 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V } } else if (router.getState() == State.Stopped || router.getState() == State.Stopping) { - s_logger.debug("Router " + router.getInstanceName() + " is in " + router.getState() + + s_logger.debug("Router " + router.getInstanceName() + " is in " + router.getState() + ", so not sending apply " + typeString + " commands to the backend"); } else { s_logger.warn("Unable to apply " + typeString +", virtual router is not in the right state " + router.getState()); if (isZoneBasic && isPodLevelException) { - throw new ResourceUnavailableException("Unable to apply " + typeString + + throw new ResourceUnavailableException("Unable to apply " + typeString + ", virtual router is not in the right state", Pod.class, podId); } - throw new ResourceUnavailableException("Unable to apply " + typeString + + throw new ResourceUnavailableException("Unable to apply " + typeString + ", virtual router is not in the right state", DataCenter.class, router.getDataCenterId()); } } @@ -3870,7 +3878,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V rulesTO = new ArrayList(); for (StaticNat rule : rules) { IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId()); - StaticNatRuleTO ruleTO = new StaticNatRuleTO(0, sourceIp.getAddress().addr(), null, + StaticNatRuleTO ruleTO = new StaticNatRuleTO(0, sourceIp.getAddress().addr(), null, null, rule.getDestIpAddress(), null, null, null, rule.isForRevoke(), false); rulesTO.add(ruleTO); } @@ -3907,8 +3915,6 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V @Override public void processConnect(Host host, StartupCommand cmd, boolean forRebalance) throws ConnectionException { - UserContext context = UserContext.current(); - context.setAccountId(1); List routers = _routerDao.listIsolatedByHostId(host.getId()); for (DomainRouterVO router : routers) { if (router.isStopPending()) { diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 397ece8ea72..4c1fa374274 100755 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -26,6 +26,8 @@ import javax.ejb.Local; import javax.inject.Inject; import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -63,7 +65,6 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; @@ -189,8 +190,8 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @ActionEvent(eventType = EventTypes.EVENT_NET_RULE_ADD, eventDescription = "creating forwarding rule", create = true) public PortForwardingRule createPortForwardingRule(PortForwardingRule rule, Long vmId, Ip vmIp, boolean openFirewall) throws NetworkRuleConflictException { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); Long ipAddrId = rule.getSourceIpAddressId(); @@ -317,7 +318,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules if (!_firewallDao.setStateToAdd(newRule)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } - UserContext.current().setEventDetails("Rule Id: " + newRule.getId()); + CallContext.current().setEventDetails("Rule Id: " + newRule.getId()); UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_RULE_ADD, newRule.getAccountId(), ipAddress.getDataCenterId(), newRule.getId(), null, PortForwardingRule.class.getName(), newRule.getUuid()); @@ -352,7 +353,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @DB @ActionEvent(eventType = EventTypes.EVENT_NET_RULE_ADD, eventDescription = "creating static nat rule", create = true) public StaticNatRule createStaticNatRule(StaticNatRule rule, boolean openFirewall) throws NetworkRuleConflictException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long ipAddrId = rule.getSourceIpAddressId(); @@ -399,7 +400,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules if (!_firewallDao.setStateToAdd(newRule)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } - UserContext.current().setEventDetails("Rule Id: " + newRule.getId()); + CallContext.current().setEventDetails("Rule Id: " + newRule.getId()); UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_RULE_ADD, newRule.getAccountId(), 0, newRule.getId(), null, FirewallRule.class.getName(), newRule.getUuid()); @@ -433,9 +434,9 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules private boolean enableStaticNat(long ipId, long vmId, long networkId, boolean isSystemVm, String vmGuestIp) throws NetworkRuleConflictException, ResourceUnavailableException { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); - UserContext.current().setEventDetails("Ip Id: " + ipId); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); + CallContext.current().setEventDetails("Ip Id: " + ipId); // Verify input parameters IPAddressVO ipAddress = _ipAddressDao.findById(ipId); @@ -569,7 +570,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules // Verify ip address parameter // checking vm id is not sufficient, check for the vm ip - isIpReadyForStaticNat(vmId, ipAddress, dstIp, caller, ctx.getCallerUserId()); + isIpReadyForStaticNat(vmId, ipAddress, dstIp, caller, ctx.getCallingUserId()); } ipAddress.setOneToOneNat(true); @@ -655,8 +656,8 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @Override @ActionEvent(eventType = EventTypes.EVENT_NET_RULE_DELETE, eventDescription = "revoking forwarding rule", async = true) public boolean revokePortForwardingRule(long ruleId, boolean apply) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); PortForwardingRuleVO rule = _portForwardingDao.findById(ruleId); if (rule == null) { @@ -665,7 +666,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules _accountMgr.checkAccess(caller, null, true, rule); - if (!revokePortForwardingRuleInternal(ruleId, caller, ctx.getCallerUserId(), apply)) { + if (!revokePortForwardingRuleInternal(ruleId, caller, ctx.getCallingUserId(), apply)) { throw new CloudRuntimeException("Failed to delete port forwarding rule"); } return true; @@ -690,8 +691,8 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @Override @ActionEvent(eventType = EventTypes.EVENT_NET_RULE_DELETE, eventDescription = "revoking forwarding rule", async = true) public boolean revokeStaticNatRule(long ruleId, boolean apply) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); FirewallRuleVO rule = _firewallDao.findById(ruleId); if (rule == null) { @@ -700,7 +701,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules _accountMgr.checkAccess(caller, null, true, rule); - if (!revokeStaticNatRuleInternal(ruleId, caller, ctx.getCallerUserId(), apply)) { + if (!revokeStaticNatRuleInternal(ruleId, caller, ctx.getCallingUserId(), apply)) { throw new CloudRuntimeException("Failed to revoke forwarding rule"); } return true; @@ -764,7 +765,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules Long id = cmd.getId(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); if (ipId != null) { @@ -977,7 +978,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @Override public Pair, Integer> searchStaticNatRules(Long ipId, Long id, Long vmId, Long start, Long size, String accountName, Long domainId, Long projectId, boolean isRecursive, boolean listAll) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); if (ipId != null) { @@ -1182,8 +1183,8 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules @Override @ActionEvent(eventType = EventTypes.EVENT_DISABLE_STATIC_NAT, eventDescription = "disabling static nat", async=true) public boolean disableStaticNat(long ipId) throws ResourceUnavailableException, NetworkRuleConflictException, InsufficientAddressCapacityException { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); IPAddressVO ipAddress = _ipAddressDao.findById(ipId); checkIpAndUserVm(ipAddress, null, caller); @@ -1211,7 +1212,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules } } - return disableStaticNat(ipId, caller, ctx.getCallerUserId(), false); + return disableStaticNat(ipId, caller, ctx.getCallingUserId(), false); } @Override diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java index ce6f8ac66c5..d4460f1209a 100755 --- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java @@ -43,10 +43,12 @@ import org.apache.cloudstack.api.command.user.securitygroup.CreateSecurityGroupC import org.apache.cloudstack.api.command.user.securitygroup.DeleteSecurityGroupCmd; import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupEgressCmd; import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupIngressCmd; + import org.apache.commons.codec.digest.DigestUtils; import org.apache.log4j.Logger; import com.amazonaws.services.identitymanagement.model.User; + import com.cloud.agent.AgentManager; import com.cloud.agent.api.NetworkRulesSystemVmCommand; import com.cloud.agent.api.NetworkRulesVmSecondaryIpCommand; @@ -75,7 +77,6 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.uservm.UserVm; import com.cloud.utils.NumbersUtil; @@ -97,8 +98,12 @@ import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicSecondaryIpDao; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; + import edu.emory.mathcs.backport.java.util.Collections; + import org.apache.cloudstack.api.command.user.securitygroup.*; +import org.apache.cloudstack.context.CallContext; + import java.util.*; @Local(value = { SecurityGroupManager.class, SecurityGroupService.class }) @@ -596,7 +601,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro throw new InvalidParameterValueException("At least one cidr or at least one security group needs to be specified"); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(securityGroup.getAccountId()); if (owner == null) { @@ -773,7 +778,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro private boolean revokeSecurityGroupRule(Long id, SecurityRuleType type) { // input validation - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); SecurityGroupRuleVO rule = _securityGroupRuleDao.findById(id); if (rule == null) { @@ -827,7 +832,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro @ActionEvent(eventType = EventTypes.EVENT_SECURITY_GROUP_CREATE, eventDescription = "creating security group") public SecurityGroupVO createSecurityGroup(CreateSecurityGroupCmd cmd) throws PermissionDeniedException, InvalidParameterValueException { String name = cmd.getSecurityGroupName(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, cmd.getAccountName(), cmd.getDomainId(), cmd.getProjectId()); if (_securityGroupDao.isNameInUse(owner.getId(), owner.getDomainId(), cmd.getSecurityGroupName())) { @@ -1066,7 +1071,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro @ActionEvent(eventType = EventTypes.EVENT_SECURITY_GROUP_DELETE, eventDescription = "deleting security group") public boolean deleteSecurityGroup(DeleteSecurityGroupCmd cmd) throws ResourceInUseException { Long groupId = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); SecurityGroupVO group = _securityGroupDao.findById(groupId); if (group == null) { @@ -1318,7 +1323,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro return true; } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); for (SecurityGroupVO securityGroup: vmSgGrps) { Account owner = _accountMgr.getAccount(securityGroup.getAccountId()); diff --git a/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java b/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java index 5c45a86c6d6..1028d74a6e2 100644 --- a/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java +++ b/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java @@ -35,16 +35,19 @@ import com.cloud.offering.NetworkOffering; import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.context.CallContext; + import javax.ejb.Local; import javax.inject.Inject; + import java.util.ArrayList; import java.util.List; @@ -232,7 +235,7 @@ public class NetworkACLManagerImpl extends ManagerBase implements NetworkACLMana if (!_networkACLItemDao.setStateToAdd(newRule)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRule); } - UserContext.current().setEventDetails("ACL Item Id: " + newRule.getId()); + CallContext.current().setEventDetails("ACL Item Id: " + newRule.getId()); txn.commit(); diff --git a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java index 4c978691cd2..274ca44b6eb 100644 --- a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java +++ b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java @@ -31,7 +31,6 @@ import com.cloud.tags.ResourceTagVO; import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; @@ -42,16 +41,20 @@ import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; + import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd; import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import javax.ejb.Local; import javax.inject.Inject; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -85,7 +88,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ @Override public NetworkACL createNetworkACL(String name, String description, long vpcId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Vpc vpc = _vpcMgr.getVpc(vpcId); if(vpc == null){ throw new InvalidParameterValueException("Unable to find VPC"); @@ -137,7 +140,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ @Override public boolean deleteNetworkACL(long id) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); NetworkACL acl = _networkACLDao.findById(id); if(acl == null) { throw new InvalidParameterValueException("Unable to find specified ACL"); @@ -157,7 +160,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ } @Override public boolean replaceNetworkACLonPrivateGw(long aclId, long privateGatewayId) throws ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VpcGateway gateway = _vpcGatewayDao.findById(privateGatewayId); if (gateway == null) { throw new InvalidParameterValueException("Unable to find specified private gateway"); @@ -198,7 +201,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ @Override public boolean replaceNetworkACL(long aclId, long networkId) throws ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); NetworkVO network = _networkDao.findById(networkId); if(network == null){ @@ -237,7 +240,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ @Override public NetworkACLItem createNetworkACLItem(CreateNetworkACLCmd aclItemCmd){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long aclId = aclItemCmd.getACLId(); if(aclId == null){ //ACL id is not specified. Get the ACL details from network @@ -415,7 +418,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ String action = cmd.getAction(); Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = @@ -518,7 +521,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ Vpc vpc = _vpcMgr.getVpc(acl.getVpcId()); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountMgr.checkAccess(caller, null, true, vpc); diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index 2555ef61217..f74e7705b21 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -81,7 +81,6 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; @@ -100,15 +99,19 @@ import com.cloud.utils.net.NetUtils; import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContextImpl; import com.cloud.vm.dao.DomainRouterDao; + import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd; import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -350,7 +353,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } VpcOffering offering = createVpcOffering(name, displayText, svcProviderMap, false, null); - UserContext.current().setEventDetails(" Id: " + offering.getId() + " Name: " + name); + CallContext.current().setEventDetails(" Id: " + offering.getId() + " Name: " + name); return offering; } @@ -498,7 +501,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_VPC_OFFERING_DELETE, eventDescription = "deleting vpc offering") public boolean deleteVpcOffering(long offId) { - UserContext.current().setEventDetails(" Id: " + offId); + CallContext.current().setEventDetails(" Id: " + offId); // Verify vpc offering id VpcOfferingVO offering = _vpcOffDao.findById(offId); @@ -528,7 +531,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_VPC_OFFERING_UPDATE, eventDescription = "updating vpc offering") public VpcOffering updateVpcOffering(long vpcOffId, String vpcOfferingName, String displayText, String state) { - UserContext.current().setEventDetails(" Id: " + vpcOffId); + CallContext.current().setEventDetails(" Id: " + vpcOffId); // Verify input parameters VpcOfferingVO offeringToUpdate = _vpcOffDao.findById(vpcOffId); @@ -571,7 +574,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @ActionEvent(eventType = EventTypes.EVENT_VPC_CREATE, eventDescription = "creating vpc", create=true) public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, String networkDomain) throws ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(vpcOwnerId); //Verify that caller can perform actions in behalf of vpc owner @@ -697,8 +700,8 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_VPC_DELETE, eventDescription = "deleting VPC") public boolean deleteVpc(long vpcId) throws ConcurrentOperationException, ResourceUnavailableException { - UserContext.current().setEventDetails(" Id: " + vpcId); - UserContext ctx = UserContext.current(); + CallContext.current().setEventDetails(" Id: " + vpcId); + CallContext ctx = CallContext.current(); // Verify vpc id Vpc vpc = getVpc(vpcId); @@ -707,9 +710,9 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } //verify permissions - _accountMgr.checkAccess(ctx.getCaller(), null, false, vpc); + _accountMgr.checkAccess(ctx.getCallingAccount(), null, false, vpc); - return destroyVpc(vpc, ctx.getCaller(), ctx.getCallerUserId()); + return destroyVpc(vpc, ctx.getCallingAccount(), ctx.getCallingUserId()); } @Override @@ -764,8 +767,8 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_VPC_UPDATE, eventDescription = "updating vpc") public Vpc updateVpc(long vpcId, String vpcName, String displayText) { - UserContext.current().setEventDetails(" Id: " + vpcId); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + vpcId); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters VpcVO vpcToUpdate = _vpcDao.findById(vpcId); @@ -798,7 +801,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis public List listVpcs(Long id, String vpcName, String displayText, List supportedServicesStr, String cidr, Long vpcOffId, String state, String accountName, Long domainId, String keyword, Long startIndex, Long pageSizeVal, Long zoneId, Boolean isRecursive, Boolean listAll, Boolean restartRequired, Map tags, Long projectId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary providersToImplement = getVpcProviders(vpc.getId()); - ReservationContext context = new ReservationContextImpl(null, null, _accountMgr.getActiveUser(ctx.getCallerUserId()), caller); + ReservationContext context = new ReservationContextImpl(null, null, _accountMgr.getActiveUser(ctx.getCallingUserId()), caller); for (VpcProvider element: getVpcElements()){ if(providersToImplement.contains(element.getProvider())){ if (element.shutdownVpc(vpc, context)) { @@ -1281,7 +1284,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @ActionEvent(eventType = EventTypes.EVENT_VPC_RESTART, eventDescription = "restarting vpc") public boolean restartVpc(long vpcId) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters Vpc vpc = getActiveVpc(vpcId); @@ -1521,7 +1524,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } if (deleteNetwork) { - User callerUser = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User callerUser = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); Account owner = _accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM); ReservationContext context = new ReservationContextImpl(null, null, callerUser, owner); _ntwkMgr.destroyNetwork(networkId, context); @@ -1545,7 +1548,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis Boolean listAll = cmd.listAll(); Long domainId = cmd.getDomainId(); String accountName = cmd.getAccountName(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); String state = cmd.getState(); Long projectId = cmd.getProjectId(); @@ -1607,7 +1610,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override public boolean applyStaticRoutes(long vpcId) throws ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List routes = _staticRouteDao.listByVpcId(vpcId); return applyStaticRoutes(routes, caller, true); } @@ -1675,7 +1678,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Override @ActionEvent(eventType = EventTypes.EVENT_STATIC_ROUTE_DELETE, eventDescription = "deleting static route") public boolean revokeStaticRoute(long routeId) throws ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); StaticRouteVO route = _staticRouteDao.findById(routeId); if (route == null) { @@ -1712,7 +1715,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @DB @ActionEvent(eventType = EventTypes.EVENT_STATIC_ROUTE_CREATE, eventDescription = "creating static route", create=true) public StaticRoute createStaticRoute(long gatewayId, String cidr) throws NetworkRuleConflictException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); //parameters validation VpcGateway gateway = _vpcGatewayDao.findById(gatewayId); @@ -1762,7 +1765,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis if (!_staticRouteDao.setStateToAdd(newRoute)) { throw new CloudRuntimeException("Unable to update the state to add for " + newRoute); } - UserContext.current().setEventDetails("Static route Id: " + newRoute.getId()); + CallContext.current().setEventDetails("Static route Id: " + newRoute.getId()); txn.commit(); @@ -1795,7 +1798,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis Boolean isRecursive = cmd.isRecursive(); Boolean listAll = cmd.listAll(); String accountName = cmd.getAccountName(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Map tags = cmd.getTags(); Long projectId = cmd.getProjectId(); @@ -1939,7 +1942,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @ActionEvent(eventType = EventTypes.EVENT_NET_IP_ASSIGN, eventDescription = "associating Ip", async = true) public IpAddress associateIPToVpc(long ipId, long vpcId) throws ResourceAllocationException, ResourceUnavailableException, InsufficientAddressCapacityException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = null; IpAddress ipToAssoc = _ntwkModel.getIp(ipId); diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java index 9e7bb13b867..401b9f48f3e 100755 --- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java @@ -27,6 +27,8 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd; import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -43,10 +45,6 @@ import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.Network.Service; -import com.cloud.network.NetworkModel; -import com.cloud.network.PublicIpAddress; -import com.cloud.network.RemoteAccessVpn; -import com.cloud.network.VpnUser; import com.cloud.network.*; import com.cloud.network.VpnUser.State; import com.cloud.network.dao.FirewallRulesDao; @@ -66,18 +64,12 @@ import com.cloud.server.ConfigurationServer; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.PasswordGenerator; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; -import com.cloud.utils.db.DB; -import com.cloud.utils.db.Filter; -import com.cloud.utils.db.JoinBuilder; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.*; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.net.NetUtils; @@ -113,8 +105,8 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @DB public RemoteAccessVpn createRemoteAccessVpn(long publicIpId, String ipRange, boolean openFirewall, long networkId) throws NetworkRuleConflictException { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); // make sure ip address exists PublicIpAddress ipAddr = _networkMgr.getPublicIpAddress(publicIpId); @@ -312,7 +304,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @Override @DB public VpnUser addVpnUser(long vpnOwnerId, String username, String password) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (!username.matches("^[a-zA-Z0-9][a-zA-Z0-9@._-]{2,63}$")) { throw new InvalidParameterValueException( @@ -366,7 +358,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @Override public List listVpnUsers(long vpnOwnerId, String userName) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountDao.findById(vpnOwnerId); _accountMgr.checkAccess(caller, null, true, owner); return _vpnUsersDao.listByAccount(vpnOwnerId); @@ -374,7 +366,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @Override @DB public RemoteAccessVpnVO startRemoteAccessVpn(long ipAddressId, boolean openFirewall) throws ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); RemoteAccessVpnVO vpn = _remoteAccessVpnDao.findByPublicIpAddress(ipAddressId); if (vpn == null) { @@ -425,7 +417,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @DB @Override public boolean applyVpnUsers(long vpnOwnerId, String userName) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountDao.findById(vpnOwnerId); _accountMgr.checkAccess(caller, null, true, owner); @@ -504,7 +496,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc public Pair, Integer> searchForVpnUsers(ListVpnUsersCmd cmd) { String username = cmd.getUsername(); Long id = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary(cmd.getDomainId(), cmd.isRecursive(), null); @@ -542,7 +534,7 @@ public class RemoteAccessVpnManagerImpl extends ManagerBase implements RemoteAcc @Override public Pair, Integer> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd) { // do some parameter validation - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long ipAddressId = cmd.getPublicIpId(); List permittedAccounts = new ArrayList(); diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index a24300e02bf..292b73e846e 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -35,6 +35,8 @@ import org.apache.cloudstack.api.command.user.vpn.ListVpnCustomerGatewaysCmd; import org.apache.cloudstack.api.command.user.vpn.ListVpnGatewaysCmd; import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -64,7 +66,6 @@ import com.cloud.network.vpc.dao.VpcDao; import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -112,7 +113,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_GATEWAY_CREATE, eventDescription = "creating s2s vpn gateway", create=true) public Site2SiteVpnGateway createVpnGateway(CreateVpnGatewayCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(cmd.getEntityOwnerId()); //Verify that caller can perform actions in behalf of vpc owner @@ -157,7 +158,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CUSTOMER_GATEWAY_CREATE, eventDescription = "creating s2s customer gateway", create=true) public Site2SiteCustomerGateway createCustomerGateway(CreateVpnCustomerGatewayCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(cmd.getEntityOwnerId()); //Verify that caller can perform actions in behalf of vpc owner @@ -225,7 +226,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CONNECTION_CREATE, eventDescription = "creating s2s vpn connection", create=true) public Site2SiteVpnConnection createVpnConnection(CreateVpnConnectionCmd cmd) throws NetworkRuleConflictException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(cmd.getEntityOwnerId()); //Verify that caller can perform actions in behalf of vpc owner @@ -337,8 +338,8 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CUSTOMER_GATEWAY_DELETE, eventDescription = "deleting s2s vpn customer gateway", create=true) public boolean deleteCustomerGateway(DeleteVpnCustomerGatewayCmd cmd) { - UserContext.current().setEventDetails(" Id: " + cmd.getId()); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + cmd.getId()); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); Site2SiteCustomerGateway customerGateway = _customerGatewayDao.findById(id); @@ -371,8 +372,8 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_GATEWAY_DELETE, eventDescription = "deleting s2s vpn gateway", create=true) public boolean deleteVpnGateway(DeleteVpnGatewayCmd cmd) { - UserContext.current().setEventDetails(" Id: " + cmd.getId()); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + cmd.getId()); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); Site2SiteVpnGateway vpnGateway = _vpnGatewayDao.findById(id); @@ -389,8 +390,8 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CUSTOMER_GATEWAY_UPDATE, eventDescription = "update s2s vpn customer gateway", create=true) public Site2SiteCustomerGateway updateCustomerGateway(UpdateVpnCustomerGatewayCmd cmd) { - UserContext.current().setEventDetails(" Id: " + cmd.getId()); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + cmd.getId()); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); Site2SiteCustomerGatewayVO gw = _customerGatewayDao.findById(id); @@ -478,8 +479,8 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CONNECTION_DELETE, eventDescription = "deleting s2s vpn connection", create=true) public boolean deleteVpnConnection(DeleteVpnConnectionCmd cmd) throws ResourceUnavailableException { - UserContext.current().setEventDetails(" Id: " + cmd.getId()); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + cmd.getId()); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); Site2SiteVpnConnectionVO conn = _vpnConnectionDao.findById(id); @@ -528,8 +529,8 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CONNECTION_RESET, eventDescription = "reseting s2s vpn connection", create=true) public Site2SiteVpnConnection resetVpnConnection(ResetVpnConnectionCmd cmd) throws ResourceUnavailableException { - UserContext.current().setEventDetails(" Id: " + cmd.getId()); - Account caller = UserContext.current().getCaller(); + CallContext.current().setEventDetails(" Id: " + cmd.getId()); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); Site2SiteVpnConnectionVO conn = _vpnConnectionDao.findById(id); @@ -559,7 +560,7 @@ public class Site2SiteVpnManagerImpl extends ManagerBase implements Site2SiteVpn long startIndex = cmd.getStartIndex(); long pageSizeVal = cmd.getPageSizeVal(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary hostTags = cmd.getHostTags(); - dcId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), dcId); + dcId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), dcId); // this is for standalone option if (clusterName == null && clusterId == null) { @@ -623,7 +623,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, throw new InvalidParameterValueException("Can't find zone by id " + dcId); } - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) { PermissionDeniedException ex = new PermissionDeniedException( "Cannot perform this operation, Zone with specified id is currently disabled"); @@ -818,13 +818,13 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, @DB protected boolean doDeleteHost(long hostId, boolean isForced, boolean isForceDeleteStorage) { - User caller = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User caller = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); // Verify that host exists HostVO host = _hostDao.findById(hostId); if (host == null) { throw new InvalidParameterValueException("Host with id " + hostId + " doesn't exist"); } - _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), host.getDataCenterId()); + _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), host.getDataCenterId()); if (!isForced && host.getResourceState() != ResourceState.Maintenance) { throw new CloudRuntimeException("Host " + host.getUuid() + " cannot be deleted as it is not in maintenance mode. Either put the host into maintenance or perform a forced deletion."); @@ -2043,7 +2043,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, s_logger.debug("Deleting Host: " + host.getId() + " Guid:" + host.getGuid()); } - User caller = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User caller = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); if (forceDestroyStorage) { // put local storage into mainenance mode, will set all the VMs on diff --git a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java index b5c060d8c33..9ec27bd0d17 100755 --- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java +++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java @@ -30,8 +30,10 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.acl.SecurityChecker.AccessType; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -78,7 +80,6 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ManagerBase; @@ -424,7 +425,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim @Override public List searchForLimits(Long id, Long accountId, Long domainId, Integer type, Long startIndex, Long pageSizeVal) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List limits = new ArrayList(); boolean isAccount = true; @@ -568,7 +569,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim @Override public ResourceLimitVO updateResourceLimit(Long accountId, Long domainId, Integer typeId, Long max) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (max == null) { max = new Long(Resource.RESOURCE_UNLIMITED); @@ -666,7 +667,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim @Override public List recalculateResourceCount(Long accountId, Long domainId, Integer typeId) throws InvalidParameterValueException, CloudRuntimeException, PermissionDeniedException { - Account callerAccount = UserContext.current().getCaller(); + Account callerAccount = CallContext.current().getCallingAccount(); long count = 0; List counts = new ArrayList(); List resourceTypes = new ArrayList(); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index f7fc8345a88..8d979c7d1c2 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -41,15 +41,19 @@ import javax.naming.ConfigurationException; import com.cloud.exception.*; import com.cloud.vm.*; + import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.ApiConstants; import com.cloud.event.ActionEventUtils; + import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd; import org.apache.cloudstack.api.command.admin.region.*; + import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Logger; + import org.apache.cloudstack.affinity.AffinityGroupProcessor; import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; import org.apache.cloudstack.api.command.admin.account.CreateAccountCmd; @@ -513,7 +517,6 @@ import com.cloud.user.AccountService; import com.cloud.user.SSHKeyPair; import com.cloud.user.SSHKeyPairVO; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.SSHKeyPairDao; @@ -554,6 +557,7 @@ import org.apache.cloudstack.api.command.admin.region.AddRegionCmd; import org.apache.cloudstack.api.command.admin.region.RemoveRegionCmd; import org.apache.cloudstack.api.command.admin.region.UpdateRegionCmd; import org.apache.cloudstack.api.command.admin.config.ListDeploymentPlannersCmd; +import org.apache.cloudstack.context.CallContext; public class ManagementServerImpl extends ManagerBase implements ManagementServer { @@ -837,7 +841,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public boolean archiveEvents(ArchiveEventsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List ids = cmd.getIds(); boolean result =true; List permittedAccountIds = new ArrayList(); @@ -852,7 +856,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe List events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), permittedAccountIds); ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]); - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, sameOwnerEvents); if (ids != null && events.size() < ids.size()) { result = false; @@ -864,7 +868,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public boolean deleteEvents(DeleteEventsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List ids = cmd.getIds(); boolean result =true; List permittedAccountIds = new ArrayList(); @@ -879,7 +883,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe List events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), permittedAccountIds); ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]); - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, sameOwnerEvents); if (ids != null && events.size() < ids.size()) { result = false; @@ -906,7 +910,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Filter searchFilter = new Filter(ClusterVO.class, "id", true, startIndex, pageSizeVal); SearchCriteria sc = _clusterDao.createSearchCriteria(); - zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); + zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId); sc.addAnd("dataCenterId", SearchCriteria.Op.EQ, zoneId); sc.addAnd("hypervisorType", SearchCriteria.Op.EQ, hypervisorType); @@ -924,7 +928,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Object clusterType = cmd.getClusterType(); Object allocationState = cmd.getAllocationState(); String keyword = cmd.getKeyword(); - zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); + zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId); Filter searchFilter = new Filter(ClusterVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); @@ -981,7 +985,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public Pair, Integer> searchForServers(ListHostsCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Object name = cmd.getHostName(); Object type = cmd.getType(); Object state = cmd.getState(); @@ -1001,7 +1005,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe public Ternary, Integer>, List, Map> listHostsForMigrationOfVM(Long vmId, Long startIndex, Long pageSize) { // access check - only root admin can migrate VM - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (s_logger.isDebugEnabled()) { s_logger.debug("Caller is not a root admin, permission denied to migrate the VM"); @@ -1188,7 +1192,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public Pair, List> listStoragePoolsForMigrationOfVolume(Long volumeId) { // Access check - only root administrator can migrate volumes. - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (s_logger.isDebugEnabled()) { s_logger.debug("Caller is not a root admin, permission denied to migrate the volume"); @@ -1387,7 +1391,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Long zoneId = cmd.getZoneId(); Object keyword = cmd.getKeyword(); Object allocationState = cmd.getAllocationState(); - zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); + zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId); Filter searchFilter = new Filter(HostPodVO.class, "dataCenterId", true, cmd.getStartIndex(), cmd.getPageSizeVal()); @@ -1745,7 +1749,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Integer sortKey = cmd.getSortKey(); Boolean isDynamicallyScalable = cmd.isDynamicallyScalable(); Boolean isRoutingTemplate = cmd.isRoutingType(); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); // verify that template exists VMTemplateVO template = _templateDao.findById(id); @@ -1865,7 +1869,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe List permittedAccounts = new ArrayList(); ListProjectResourcesCriteria listProjectResourcesCriteria = null; if (isAllocated) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Ternary domainIdRecursiveListProject = new Ternary( cmd.getDomainId(), cmd.isRecursive(), null); @@ -2056,9 +2060,9 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe private ConsoleProxyVO stopConsoleProxy(VMInstanceVO systemVm, boolean isForced) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException { - User caller = _userDao.findById(UserContext.current().getCallerUserId()); + User caller = _userDao.findById(CallContext.current().getCallingUserId()); - if (_itMgr.advanceStop(systemVm, isForced, caller, UserContext.current().getCaller())) { + if (_itMgr.advanceStop(systemVm, isForced, caller, CallContext.current().getCallingAccount())) { return _consoleProxyDao.findById(systemVm.getId()); } return null; @@ -2132,7 +2136,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe } // check permissions - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountMgr.checkAccess(caller, domain); // domain name is unique under the parent domain @@ -2216,7 +2220,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Object type = cmd.getType(); Object keyword = cmd.getKeyword(); - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), null); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), null); if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } @@ -2242,14 +2246,14 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public boolean archiveAlerts(ArchiveAlertsCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), null); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), null); boolean result = _alertDao.archiveAlert(cmd.getIds(), cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), zoneId); return result; } @Override public boolean deleteAlerts(DeleteAlertsCmd cmd) { - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), null); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), null); boolean result = _alertDao.deleteAlert(cmd.getIds(), cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), zoneId); return result; } @@ -2265,7 +2269,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe if (clusterId != null) { throw new InvalidParameterValueException("Currently clusterId param is not suppoerted"); } - zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); + zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId); List summedCapacities = new ArrayList(); if (zoneId == null && podId == null) {// Group by Zone, capacity type @@ -2374,7 +2378,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Long clusterId = cmd.getClusterId(); Boolean fetchLatest = cmd.getFetchLatest(); - zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); + zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId); if (fetchLatest != null && fetchLatest) { _alertMgr.recalculateCapacity(); } @@ -2945,9 +2949,9 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe private SecondaryStorageVmVO stopSecondaryStorageVm(VMInstanceVO systemVm, boolean isForced) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException { - User caller = _userDao.findById(UserContext.current().getCallerUserId()); + User caller = _userDao.findById(CallContext.current().getCallingUserId()); - if (_itMgr.advanceStop(systemVm, isForced, caller, UserContext.current().getCaller())) { + if (_itMgr.advanceStop(systemVm, isForced, caller, CallContext.current().getCallingAccount())) { return _secStorageVmDao.findById(systemVm.getId()); } return null; @@ -2971,7 +2975,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public Pair, Integer> searchForSystemVm(ListSystemVMsCmd cmd) { String type = cmd.getSystemVmType(); - Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId()); + Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId()); Long id = cmd.getId(); String name = cmd.getSystemVmName(); String state = cmd.getState(); @@ -3153,7 +3157,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public ArrayList getCloudIdentifierResponse(long userId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // verify that user exists User user = _accountMgr.getUserIncludingRemoved(userId); @@ -3241,7 +3245,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public InstanceGroupVO updateVmGroup(UpdateVMGroupCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long groupId = cmd.getId(); String groupName = cmd.getGroupName(); @@ -3439,7 +3443,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public SSHKeyPair createSSHKeyPair(CreateSSHKeyPairCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); String accountName = cmd.getAccountName(); Long domainId = cmd.getDomainId(); Long projectId = cmd.getProjectId(); @@ -3463,7 +3467,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public boolean deleteSSHKeyPair(DeleteSSHKeyPairCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); String accountName = cmd.getAccountName(); Long domainId = cmd.getDomainId(); Long projectId = cmd.getProjectId(); @@ -3491,7 +3495,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe String name = cmd.getName(); String fingerPrint = cmd.getFingerprint(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( @@ -3523,7 +3527,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override @ActionEvent(eventType = EventTypes.EVENT_REGISTER_SSH_KEYPAIR, eventDescription = "registering ssh keypair", async = true) public SSHKeyPair registerSSHKeyPair(RegisterSSHKeyPairCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, cmd.getAccountName(), cmd.getDomainId(), cmd.getProjectId()); @@ -3561,7 +3565,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public String getVMPassword(GetVMPasswordCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); UserVmVO vm = _userVmDao.findById(cmd.getId()); if (vm == null) { @@ -3708,7 +3712,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe if (_hypervisorCapabilitiesDao.update(id, hpvCapabilities)) { hpvCapabilities = _hypervisorCapabilitiesDao.findById(id); - UserContext.current().setEventDetails("Hypervisor Capabilities id=" + hpvCapabilities.getId()); + CallContext.current().setEventDetails("Hypervisor Capabilities id=" + hpvCapabilities.getId()); return hpvCapabilities; } else { return null; @@ -3737,7 +3741,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe } private VirtualMachine upgradeStoppedSystemVm(Long systemVmId, Long serviceOfferingId){ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(systemVmId, VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm); if (systemVm == null) { diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 830fd368fed..2b57bae6ccc 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -51,6 +51,7 @@ import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd; import org.apache.cloudstack.api.command.admin.storage.DeleteImageStoreCmd; import org.apache.cloudstack.api.command.admin.storage.DeletePoolCmd; import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.ClusterScope; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreLifeCycle; @@ -148,7 +149,6 @@ import com.cloud.template.TemplateManager; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.UserDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -698,7 +698,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C throw new InvalidParameterValueException("unable to find zone by id " + zoneId); } // Check if zone is disabled - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) { throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: " + zoneId); } @@ -1195,9 +1195,9 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C @DB public PrimaryDataStoreInfo preparePrimaryStorageForMaintenance(Long primaryStorageId) throws ResourceUnavailableException, InsufficientCapacityException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); User user = _userDao.findById(userId); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); boolean restart = true; StoragePoolVO primaryStorage = null; @@ -1226,9 +1226,9 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C @DB public PrimaryDataStoreInfo cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws ResourceUnavailableException { Long primaryStorageId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); User user = _userDao.findById(userId); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); StoragePoolVO primaryStorage = null; primaryStorage = _storagePoolDao.findById(primaryStorageId); @@ -1679,7 +1679,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C throw new InvalidParameterValueException("Can't find zone by id " + dcId); } - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) { PermissionDeniedException ex = new PermissionDeniedException( "Cannot perform this operation, Zone with specified id is currently disabled"); @@ -1754,13 +1754,13 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C @Override public boolean deleteImageStore(DeleteImageStoreCmd cmd) { long storeId = cmd.getId(); - User caller = _accountMgr.getActiveUser(UserContext.current().getCallerUserId()); + User caller = _accountMgr.getActiveUser(CallContext.current().getCallingUserId()); // Verify that image store exists ImageStoreVO store = _imageStoreDao.findById(storeId); if (store == null) { throw new InvalidParameterValueException("Image store with id " + storeId + " doesn't exist"); } - _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), store.getDataCenterId()); + _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), store.getDataCenterId()); // Verify that there are no live snapshot, template, volume on the image // store to be deleted @@ -1833,7 +1833,7 @@ public class StorageManagerImpl extends ManagerBase implements StorageManager, C throw new InvalidParameterValueException("Can't find zone by id " + dcId); } - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(account.getType())) { PermissionDeniedException ex = new PermissionDeniedException( "Cannot perform this operation, Zone with specified id is currently disabled"); diff --git a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java index f6b39f1fe47..5c971837ab1 100644 --- a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java +++ b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java @@ -23,9 +23,11 @@ import java.util.List; import javax.inject.Inject; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.*; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -44,7 +46,6 @@ import com.cloud.storage.dao.StoragePoolWorkDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.user.Account; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.UserDao; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.ExecutionException; @@ -103,9 +104,9 @@ public class StoragePoolAutomationImpl implements StoragePoolAutomation { @Override public boolean maintain(DataStore store) { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); User user = _userDao.findById(userId); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); StoragePoolVO pool = this.primaryDataStoreDao.findById(store.getId()); try { List spes = null; @@ -355,9 +356,9 @@ public class StoragePoolAutomationImpl implements StoragePoolAutomation { @Override public boolean cancelMaintain(DataStore store) { // Change the storage state back to up - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); User user = _userDao.findById(userId); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); StoragePoolVO poolVO = this.primaryDataStoreDao .findById(store.getId()); StoragePool pool = (StoragePool)store; diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java index 72d27bca1bb..a8a3e1a854f 100644 --- a/server/src/com/cloud/storage/VolumeManagerImpl.java +++ b/server/src/com/cloud/storage/VolumeManagerImpl.java @@ -44,6 +44,7 @@ import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd; import org.apache.cloudstack.api.command.user.volume.UpdateVolumeCmd; import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.ChapInfo; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; @@ -153,7 +154,6 @@ import com.cloud.template.TemplateManager; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; import com.cloud.user.VmDiskStatisticsVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -386,7 +386,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { @ActionEvent(eventType = EventTypes.EVENT_VOLUME_UPLOAD, eventDescription = "uploading volume", async = true) public VolumeVO uploadVolume(UploadVolumeCmd cmd) throws ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); long ownerId = cmd.getEntityOwnerId(); Account owner = _accountDao.findById(ownerId); Long zoneId = cmd.getZoneId(); @@ -753,7 +753,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { .getDomainId()); volume.setFormat(ImageFormat.valueOf(format)); volume = _volsDao.persist(volume); - UserContext.current().setEventDetails("Volume Id: " + volume.getId()); + CallContext.current().setEventDetails("Volume Id: " + volume.getId()); // Increment resource count during allocation; if actual creation fails, // decrement it @@ -823,7 +823,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { public VolumeVO allocVolume(CreateVolumeCmd cmd) throws ResourceAllocationException { // FIXME: some of the scheduled event stuff might be missing here... - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); long ownerId = cmd.getEntityOwnerId(); Boolean displayVolumeEnabled = cmd.getDisplayVolume(); @@ -1043,7 +1043,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { _usageEventDao.persist(usageEvent); } - UserContext.current().setEventDetails("Volume Id: " + volume.getId()); + CallContext.current().setEventDetails("Volume Id: " + volume.getId()); // Increment resource count during allocation; if actual creation fails, // decrement it @@ -1178,8 +1178,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { if (newDiskOffering.getDomainId() == null) { // do nothing as offering is public } else { - _configMgr.checkDiskOfferingAccess(UserContext.current() - .getCaller(), newDiskOffering); + _configMgr.checkDiskOfferingAccess(CallContext.current() + .getCallingAccount(), newDiskOffering); } if (newDiskOffering.isCustomized()) { @@ -1207,7 +1207,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { } /* does the caller have the authority to act on this volume? */ - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); UserVmVO userVm = _userVmDao.findById(volume.getInstanceId()); @@ -1702,7 +1702,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { Long vmId = command.getVirtualMachineId(); Long volumeId = command.getId(); Long deviceId = command.getDeviceId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Check that the volume ID is valid VolumeInfo volume = volFactory.getVolume(volumeId); @@ -1901,7 +1901,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { @Override @ActionEvent(eventType = EventTypes.EVENT_VOLUME_DETACH, eventDescription = "detaching volume", async = true) public Volume detachVolumeFromVM(DetachVolumeCmd cmmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if ((cmmd.getId() == null && cmmd.getDeviceId() == null && cmmd .getVirtualMachineId() == null) || (cmmd.getId() != null && (cmmd.getDeviceId() != null || cmmd @@ -2663,7 +2663,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { @Override public Snapshot allocSnapshot(Long volumeId, Long policyId) throws ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VolumeInfo volume = volFactory.getVolume(volumeId); if (volume == null) { @@ -2704,7 +2704,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager { Long volumeId = cmd.getId(); Long zoneId = cmd.getZoneId(); String mode = cmd.getMode(); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (!_accountMgr.isRootAdmin(account.getType()) && ApiDBUtils.isExtractionDisabled()) { throw new PermissionDeniedException("Extraction has been disabled by admin"); diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index ec663dab09e..9408d48f3a3 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -31,6 +31,7 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; @@ -107,7 +108,6 @@ import com.cloud.template.TemplateManager; import com.cloud.user.Account; import com.cloud.user.AccountService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -1208,9 +1208,9 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar //release elastic IP here IPAddressVO ip = _ipAddressDao.findByAssociatedVmId(profile.getId()); if (ip != null && ip.getSystem()) { - UserContext ctx = UserContext.current(); + CallContext ctx = CallContext.current(); try { - _rulesMgr.disableStaticNat(ip.getId(), ctx.getCaller(), ctx.getCallerUserId(), true); + _rulesMgr.disableStaticNat(ip.getId(), ctx.getCallingAccount(), ctx.getCallingUserId(), true); } catch (Exception ex) { s_logger.warn("Failed to disable static nat and release system ip " + ip + " as a part of vm " + profile.getVirtualMachine() + " stop due to exception ", ex); } diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index 2c9ef825cba..ddba735571e 100755 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -30,6 +30,7 @@ import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotPolicyCmd; import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd; import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd; import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotsCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; @@ -44,6 +45,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreDao; import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreVO; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -109,7 +111,6 @@ 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; import com.cloud.utils.DateUtil.IntervalType; @@ -280,7 +281,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, boolean backedUp = false; // does the caller have the authority to act on this volume - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); SnapshotInfo snapshot = this.snapshotFactory.getSnapshot(snapshotId, DataStoreRole.Primary); @@ -427,7 +428,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, } private Long getSnapshotUserId() { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); if (userId == null) { return User.UID_SYSTEM; } @@ -476,7 +477,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, @DB @ActionEvent(eventType = EventTypes.EVENT_SNAPSHOT_DELETE, eventDescription = "deleting snapshot", async = true) public boolean deleteSnapshot(long snapshotId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify parameters SnapshotVO snapshotCheck = this._snapshotDao.findById(snapshotId); @@ -534,14 +535,14 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, String intervalTypeStr = cmd.getIntervalType(); Map tags = cmd.getTags(); Long zoneId = cmd.getZoneId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); // Verify parameters if (volumeId != null) { VolumeVO volume = _volsDao.findById(volumeId); if (volume != null) { - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); } } @@ -712,7 +713,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, throw new InvalidParameterValueException("Failed to create snapshot policy, unable to find a volume with id " + volumeId); } - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); if (volume.getState() != Volume.State.Ready) { throw new InvalidParameterValueException("VolumeId: " + volumeId + " is not in " + Volume.State.Ready + " state but " + volume.getState() + ". Cannot take snapshot."); @@ -810,7 +811,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, if (volume == null) { throw new InvalidParameterValueException("Unable to find a volume with id " + volumeId); } - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); Pair, Integer> result = _snapshotPolicyDao.listAndCountByVolumeId(volumeId); return new Pair, Integer>(result.first(), result.second()); } @@ -847,7 +848,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, public List findRecurringSnapshotSchedule(ListRecurringSnapshotScheduleCmd cmd) { Long volumeId = cmd.getVolumeId(); Long policyId = cmd.getSnapshotPolicyId(); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); // Verify parameters VolumeVO volume = _volsDao.findById(volumeId); @@ -1070,7 +1071,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, throw new InvalidParameterValueException("Policy id given: " + policy + " does not belong to a valid volume"); } - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, volume); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, volume); } boolean success = true; @@ -1102,7 +1103,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager, @Override public Snapshot allocSnapshot(Long volumeId, Long policyId) throws ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VolumeInfo volume = this.volFactory.getVolume(volumeId); supportedByHypervisor(volume); diff --git a/server/src/com/cloud/tags/TaggedResourceManagerImpl.java b/server/src/com/cloud/tags/TaggedResourceManagerImpl.java index 5f254993503..e90481c9d79 100644 --- a/server/src/com/cloud/tags/TaggedResourceManagerImpl.java +++ b/server/src/com/cloud/tags/TaggedResourceManagerImpl.java @@ -27,9 +27,12 @@ import javax.naming.ConfigurationException; import com.cloud.vm.dao.NicDao; import com.cloud.network.vpc.NetworkACLItemDao; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.context.CallContext; + import com.cloud.api.query.dao.ResourceTagJoinDao; import com.cloud.domain.Domain; import com.cloud.event.ActionEvent; @@ -56,7 +59,6 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.DomainManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; @@ -248,7 +250,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso @ActionEvent(eventType = EventTypes.EVENT_TAGS_CREATE, eventDescription = "creating resource tags") public List createTags(List resourceIds, TaggedResourceType resourceType, Map tags, String customer) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List resourceTags = new ArrayList(tags.size()); @@ -332,7 +334,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso @DB @ActionEvent(eventType = EventTypes.EVENT_TAGS_DELETE, eventDescription = "deleting resource tags") public boolean deleteTags(List resourceIds, TaggedResourceType resourceType, Map tags) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); SearchBuilder sb = _resourceTagDao.createSearchBuilder(); sb.and().op("resourceId", sb.entity().getResourceId(), SearchCriteria.Op.IN); diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java index 4f29fcd6772..0e03cf4c628 100755 --- a/server/src/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/com/cloud/template/TemplateAdapterBase.java @@ -27,9 +27,11 @@ import org.apache.cloudstack.api.command.user.iso.RegisterIsoCmd; import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd; import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd; import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao; + import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; @@ -59,7 +61,6 @@ import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -201,7 +202,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat if (zone == null) { throw new IllegalArgumentException("Please specify a valid zone."); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if(Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType())){ throw new PermissionDeniedException("Cannot perform this operation, Zone is currently disabled: "+ zoneId ); } @@ -215,7 +216,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat } Long id = _tmpltDao.getNextInSequence(Long.class, "id"); - UserContext.current().setEventDetails("Id: " +id+ " name: " + name); + CallContext.current().setEventDetails("Id: " +id+ " name: " + name); return new TemplateProfile(id, userId, name, displayText, bits, passwordEnabled, requiresHVM, url, isPublic, featured, isExtractable, imgfmt, guestOSId, zoneId, hypervisorType, templateOwner.getAccountName(), templateOwner.getDomainId(), templateOwner.getAccountId(), chksum, bootable, templateTag, details, sshkeyEnabled, null, isDynamicallyScalable, templateType); @@ -225,13 +226,13 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat @Override public TemplateProfile prepare(RegisterTemplateCmd cmd) throws ResourceAllocationException { //check if the caller can operate with the template owner - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(cmd.getEntityOwnerId()); _accountMgr.checkAccess(caller, null, true, owner); boolean isRouting = (cmd.isRoutingType() == null) ? false : cmd.isRoutingType(); - return prepare(false, UserContext.current().getCallerUserId(), cmd.getTemplateName(), cmd.getDisplayText(), + return prepare(false, CallContext.current().getCallingUserId(), cmd.getTemplateName(), cmd.getDisplayText(), cmd.getBits(), cmd.isPasswordEnabled(), cmd.getRequiresHvm(), cmd.getUrl(), cmd.isPublic(), cmd.isFeatured(), cmd.isExtractable(), cmd.getFormat(), cmd.getOsTypeId(), cmd.getZoneId(), HypervisorType.getType(cmd.getHypervisor()), cmd.getChecksum(), true, cmd.getTemplateTag(), owner, cmd.getDetails(), cmd.isSshKeyEnabled(), null, cmd.isDynamicallyScalable(), @@ -242,11 +243,11 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat @Override public TemplateProfile prepare(RegisterIsoCmd cmd) throws ResourceAllocationException { //check if the caller can operate with the template owner - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(cmd.getEntityOwnerId()); _accountMgr.checkAccess(caller, null, true, owner); - return prepare(true, UserContext.current().getCallerUserId(), cmd.getIsoName(), cmd.getDisplayText(), 64, false, + return prepare(true, CallContext.current().getCallingUserId(), cmd.getIsoName(), cmd.getDisplayText(), 64, false, true, cmd.getUrl(), cmd.isPublic(), cmd.isFeatured(), cmd.isExtractable(), ImageFormat.ISO.toString(), cmd.getOsTypeId(), cmd.getZoneId(), HypervisorType.None, cmd.getChecksum(), cmd.isBootable(), null, owner, null, false, cmd.getImageStoreUuid(), cmd.isDynamicallyScalable(), TemplateType.USER); @@ -323,8 +324,8 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat @Override public TemplateProfile prepareDelete(DeleteTemplateCmd cmd) { Long templateId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); - Account account = UserContext.current().getCaller(); + Long userId = CallContext.current().getCallingUserId(); + Account account = CallContext.current().getCallingAccount(); Long zoneId = cmd.getZoneId(); VMTemplateVO template = _tmpltDao.findById(templateId.longValue()); @@ -348,7 +349,7 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat public TemplateProfile prepareExtractTemplate(ExtractTemplateCmd cmd) { Long templateId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); Long zoneId = cmd.getZoneId(); VMTemplateVO template = _tmpltDao.findById(templateId.longValue()); @@ -360,8 +361,8 @@ public abstract class TemplateAdapterBase extends AdapterBase implements Templat public TemplateProfile prepareDelete(DeleteIsoCmd cmd) { Long templateId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); - Account account = UserContext.current().getCaller(); + Long userId = CallContext.current().getCallingUserId(); + Account account = CallContext.current().getCallingAccount(); Long zoneId = cmd.getZoneId(); VMTemplateVO template = _tmpltDao.findById(templateId.longValue()); diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 18a69ca092e..c7cc8189e1f 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -25,6 +25,7 @@ import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; + import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; @@ -47,6 +48,7 @@ import org.apache.cloudstack.api.command.user.template.ListTemplatePermissionsCm import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd; import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd; import org.apache.cloudstack.api.command.user.template.UpdateTemplatePermissionsCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; @@ -72,6 +74,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -79,7 +82,6 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.api.ComputeChecksumCommand; - import com.cloud.agent.api.storage.DestroyCommand; import com.cloud.agent.api.to.DataTO; import com.cloud.agent.api.to.DiskTO; @@ -113,7 +115,6 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.HypervisorGuruManager; import com.cloud.projects.Project; import com.cloud.projects.ProjectManager; - import com.cloud.resource.ResourceManager; import com.cloud.server.ConfigurationServer; import com.cloud.storage.GuestOSVO; @@ -121,7 +122,6 @@ import com.cloud.storage.LaunchPermissionVO; import com.cloud.storage.Snapshot; import com.cloud.storage.SnapshotVO; import com.cloud.storage.Storage; - import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.DataStoreRole; @@ -133,7 +133,6 @@ import com.cloud.storage.StoragePoolStatus; import com.cloud.storage.TemplateProfile; import com.cloud.storage.Upload; import com.cloud.storage.VMTemplateZoneVO; - import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateStorageResourceAssoc; @@ -157,14 +156,12 @@ import com.cloud.storage.download.DownloadMonitor; import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.upload.UploadMonitor; import com.cloud.template.TemplateAdapter.TemplateAdapterType; - import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountService; import com.cloud.user.AccountVO; import com.cloud.user.ResourceLimitService; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserAccountDao; import com.cloud.user.dao.UserDao; @@ -332,7 +329,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_CREATE, eventDescription = "creating template") public VirtualMachineTemplate registerTemplate(RegisterTemplateCmd cmd) throws URISyntaxException, ResourceAllocationException { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (cmd.getTemplateTag() != null) { if (!_accountService.isRootAdmin(account.getType())) { throw new PermissionDeniedException("Parameter templatetag can only be specified by a Root Admin, permission denied"); @@ -374,7 +371,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_ISO_EXTRACT, eventDescription = "extracting ISO", async = true) public String extract(ExtractIsoCmd cmd) { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); Long templateId = cmd.getId(); Long zoneId = cmd.getZoneId(); String url = cmd.getUrl(); @@ -387,7 +384,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_EXTRACT, eventDescription = "extracting template", async = true) public String extract(ExtractTemplateCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long templateId = cmd.getId(); Long zoneId = cmd.getZoneId(); String url = cmd.getUrl(); @@ -412,7 +409,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, throw new InvalidParameterValueException("Unable to find template id=" + templateId); } - _accountMgr.checkAccess(UserContext.current().getCaller(), AccessType.ModifyEntry, true, vmTemplate); + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), AccessType.ModifyEntry, true, vmTemplate); prepareTemplateInAllStoragePools(vmTemplate, zoneId); return vmTemplate; @@ -677,10 +674,10 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_COPY, eventDescription = "copying template", async = true) public VirtualMachineTemplate copyTemplate(CopyTemplateCmd cmd) throws StorageUnavailableException, ResourceAllocationException { Long templateId = cmd.getId(); - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); Long sourceZoneId = cmd.getSourceZoneId(); Long destZoneId = cmd.getDestinationZoneId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify parameters if (sourceZoneId.equals(destZoneId)) { @@ -888,8 +885,8 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_ISO_DETACH, eventDescription = "detaching ISO", async = true) public boolean detachIso(long vmId) { - Account caller = UserContext.current().getCaller(); - Long userId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + Long userId = CallContext.current().getCallingUserId(); // Verify input parameters UserVmVO vmInstanceCheck = _userVmDao.findById(vmId); @@ -908,7 +905,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, if (isoId == null) { throw new InvalidParameterValueException("The specified VM has no ISO attached to it."); } - UserContext.current().setEventDetails("Vm Id: " + vmId + " ISO Id: " + isoId); + CallContext.current().setEventDetails("Vm Id: " + vmId + " ISO Id: " + isoId); State vmState = userVM.getState(); if (vmState != State.Running && vmState != State.Stopped) { @@ -927,8 +924,8 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_ISO_ATTACH, eventDescription = "attaching ISO", async = true) public boolean attachIso(long isoId, long vmId) { - Account caller = UserContext.current().getCaller(); - Long userId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + Long userId = CallContext.current().getCallingUserId(); // Verify input parameters UserVmVO vm = _userVmDao.findById(vmId); @@ -1045,7 +1042,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_DELETE, eventDescription = "deleting template", async = true) public boolean deleteTemplate(DeleteTemplateCmd cmd) { Long templateId = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); VirtualMachineTemplate template = getTemplate(templateId); if (template == null) { @@ -1067,7 +1064,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @ActionEvent(eventType = EventTypes.EVENT_ISO_DELETE, eventDescription = "deleting iso", async = true) public boolean deleteIso(DeleteIsoCmd cmd) { Long templateId = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long zoneId = cmd.getZoneId(); VirtualMachineTemplate template = getTemplate(templateId); @@ -1112,7 +1109,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override public List listTemplatePermissions(BaseListTemplateOrIsoPermissionsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long id = cmd.getId(); if (id.equals(Long.valueOf(1))) { @@ -1163,7 +1160,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, // Input validation Long id = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List accountNames = cmd.getAccountNames(); List projectIds = cmd.getProjectIds(); Boolean isFeatured = cmd.isFeatured(); @@ -1325,7 +1322,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @DB @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_CREATE, eventDescription = "creating template", async = true) public VirtualMachineTemplate createPrivateTemplate(CreateTemplateCmd command) throws CloudRuntimeException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); if (userId == null) { userId = User.UID_SYSTEM; } @@ -1433,9 +1430,9 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, @Override @ActionEvent(eventType = EventTypes.EVENT_TEMPLATE_CREATE, eventDescription = "creating template", create = true) public VMTemplateVO createPrivateTemplateRecord(CreateTemplateCmd cmd, Account templateOwner) throws ResourceAllocationException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); boolean isAdmin = (isAdmin(caller.getType())); _accountMgr.checkAccess(caller, null, true, templateOwner); @@ -1687,7 +1684,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, Boolean isRoutingTemplate = cmd.isRoutingType(); Boolean bootable = cmd.isBootable(); Integer sortKey = cmd.getSortKey(); - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); // verify that template exists VMTemplateVO template = _tmpltDao.findById(id); diff --git a/server/src/com/cloud/usage/UsageServiceImpl.java b/server/src/com/cloud/usage/UsageServiceImpl.java index ae0a585e906..e6e6ab999b5 100755 --- a/server/src/com/cloud/usage/UsageServiceImpl.java +++ b/server/src/com/cloud/usage/UsageServiceImpl.java @@ -30,8 +30,10 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.api.command.admin.usage.GenerateUsageRecordsCmd; import org.apache.cloudstack.api.command.admin.usage.GetUsageRecordsCmd; import org.apache.cloudstack.api.response.UsageTypeResponse; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.usage.UsageService; import org.apache.cloudstack.usage.UsageTypes; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -46,7 +48,6 @@ import com.cloud.usage.dao.UsageDao; import com.cloud.usage.dao.UsageJobDao; import com.cloud.user.Account; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; import com.cloud.utils.component.Manager; import com.cloud.utils.component.ManagerBase; @@ -115,7 +116,7 @@ public class UsageServiceImpl extends ManagerBase implements UsageService, Manag Long domainId = cmd.getDomainId(); String accountName = cmd.getAccountName(); Account userAccount = null; - Account caller = (Account)UserContext.current().getCaller(); + Account caller = (Account)CallContext.current().getCallingAccount(); Long usageType = cmd.getUsageType(); Long projectId = cmd.getProjectId(); diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 283e832529c..4b06e786374 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -37,6 +37,9 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.commons.codec.binary.Base64; +import org.apache.log4j.Logger; + import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.acl.SecurityChecker; @@ -46,9 +49,9 @@ import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd; import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd; import org.apache.cloudstack.api.command.admin.user.RegisterCmd; import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.context.ServerContexts; import org.apache.cloudstack.region.gslb.GlobalLoadBalancerRuleDao; -import org.apache.commons.codec.binary.Base64; -import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; import com.cloud.api.query.vo.ControlledViewEntity; @@ -104,7 +107,6 @@ import com.cloud.projects.ProjectManager; import com.cloud.projects.ProjectVO; import com.cloud.projects.dao.ProjectAccountDao; import com.cloud.projects.dao.ProjectDao; -import com.cloud.region.ha.GlobalLoadBalancingRulesService; import com.cloud.server.auth.UserAuthenticator; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.Volume; @@ -277,7 +279,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } public void setSecurityCheckers(List securityCheckers) { - this._securityCheckers = securityCheckers; + _securityCheckers = securityCheckers; } @Override @@ -621,7 +623,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M for (VolumeVO volume : volumes) { if (!volume.getState().equals(Volume.State.Destroy)) { try { - this.volumeMgr.deleteVolume(volume.getId(), caller); + volumeMgr.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; @@ -875,7 +877,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } // Check permissions - checkAccess(UserContext.current().getCaller(), domain); + checkAccess(CallContext.current().getCallingAccount(), domain); if (!_userAccountDao.validateUsernameInDomain(userName, domainId)) { throw new InvalidParameterValueException("The user " + userName + " already exists in domain " + domainId); @@ -910,7 +912,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } txn.commit(); - UserContext.current().setEntityDetails(Account.class, account.getUuid()); + CallContext.current().putContextParameter(Account.class, account.getUuid()); //check success return _userAccountDao.findById(user.getId()); @@ -931,7 +933,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M throw new CloudRuntimeException("The user cannot be created as domain " + domain.getName() + " is being deleted"); } - checkAccess(UserContext.current().getCaller(), domain); + checkAccess(CallContext.current().getCallingAccount(), domain); Account account = _accountDao.findEnabledAccount(accountName, domainId); if (account == null || account.getType() == Account.ACCOUNT_TYPE_PROJECT) { @@ -987,7 +989,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M throw new PermissionDeniedException("user id : " + id + " is system account, update is not allowed"); } - checkAccess(UserContext.current().getCaller(), null, true, account); + checkAccess(CallContext.current().getCallingAccount(), null, true, account); if (firstName != null) { if (firstName.isEmpty()) { @@ -1073,7 +1075,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M throw new CloudRuntimeException("Unable to update user " + id); } - UserContext.current().setEntityDetails(User.class, user.getUuid()); + CallContext.current().putContextParameter(User.class, user.getUuid()); return _userAccountDao.findById(id); } @@ -1081,7 +1083,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @Override @ActionEvent(eventType = EventTypes.EVENT_USER_DISABLE, eventDescription = "disabling User", async = true) public UserAccount disableUser(long userId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Check if user exists in the system User user = _userDao.findById(userId); @@ -1106,7 +1108,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M boolean success = doSetUserStatus(userId, State.disabled); if (success) { - UserContext.current().setEntityDetails(User.class, user.getUuid()); + CallContext.current().putContextParameter(User.class, user.getUuid()); // user successfully disabled return _userAccountDao.findById(userId); @@ -1120,7 +1122,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @ActionEvent(eventType = EventTypes.EVENT_USER_ENABLE, eventDescription = "enabling User") public UserAccount enableUser(long userId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Check if user exists in the system User user = _userDao.findById(userId); @@ -1155,7 +1157,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M // whenever the user is successfully enabled, reset the login attempts to zero updateLoginAttempts(userId, 0, false); - UserContext.current().setEntityDetails(User.class, user.getUuid()); + CallContext.current().putContextParameter(User.class, user.getUuid()); return _userAccountDao.findById(userId); } else { @@ -1166,7 +1168,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @Override @ActionEvent(eventType = EventTypes.EVENT_USER_LOCK, eventDescription = "locking User") public UserAccount lockUser(long userId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Check if user with id exists in the system User user = _userDao.findById(userId); @@ -1219,7 +1221,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M if (success) { - UserContext.current().setEntityDetails(User.class, user.getUuid()); + CallContext.current().putContextParameter(User.class, user.getUuid()); return _userAccountDao.findById(userId); } else { @@ -1232,9 +1234,9 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M // This method deletes the account public boolean deleteUserAccount(long accountId) { - UserContext ctx = UserContext.current(); - long callerUserId = ctx.getCallerUserId(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + long callerUserId = ctx.getCallingUserId(); + Account caller = ctx.getCallingAccount(); // If the user is a System user, return an error. We do not allow this AccountVO account = _accountDao.findById(accountId); @@ -1267,7 +1269,7 @@ 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()); + CallContext.current().putContextParameter(Account.class, account.getUuid()); return deleteAccount(account, callerUserId, caller); } @@ -1293,13 +1295,13 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } // Check if user performing the action is allowed to modify this account - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); checkAccess(caller, null, true, account); boolean success = enableAccount(account.getId()); if (success) { - UserContext.current().setEntityDetails(Account.class, account.getUuid()); + CallContext.current().putContextParameter(Account.class, account.getUuid()); return _accountDao.findById(account.getId()); } else { @@ -1310,7 +1312,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @Override @ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_DISABLE, eventDescription = "locking account", async = true) public AccountVO lockAccount(String accountName, Long domainId, Long accountId) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account account = null; if (accountId != null) { @@ -1330,7 +1332,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()); + CallContext.current().putContextParameter(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); @@ -1340,7 +1342,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @Override @ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_DISABLE, eventDescription = "disabling account", async = true) public AccountVO disableAccount(String accountName, Long domainId, Long accountId) throws ConcurrentOperationException, ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account account = null; if (accountId != null) { @@ -1360,7 +1362,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()); + CallContext.current().putContextParameter(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); @@ -1398,7 +1400,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } // Check if user performing the action is allowed to modify this account - checkAccess(UserContext.current().getCaller(), _domainMgr.getDomain(account.getDomainId())); + checkAccess(CallContext.current().getCallingAccount(), _domainMgr.getDomain(account.getDomainId())); // check if the given account name is unique in this domain for updating Account duplicateAcccount = _accountDao.findActiveAccount(newAccountName, domainId); @@ -1443,7 +1445,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M txn.commit(); if (success) { - UserContext.current().setEntityDetails(Account.class, account.getUuid()); + CallContext.current().putContextParameter(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); @@ -1473,8 +1475,8 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M throw new InvalidParameterValueException("The user is default and can't be removed"); } - checkAccess(UserContext.current().getCaller(), null, true, account); - UserContext.current().setEntityDetails(User.class, user.getUuid()); + checkAccess(CallContext.current().getCallingAccount(), null, true, account); + CallContext.current().putContextParameter(User.class, user.getUuid()); return _userDao.remove(id); } @@ -1489,6 +1491,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M @Override public void run() { try { + ServerContexts.registerSystemContext(); GlobalLock lock = GlobalLock.getInternLock("AccountCleanup"); if (lock == null) { s_logger.debug("Couldn't get the global lock"); @@ -1500,10 +1503,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M return; } - Transaction txn = null; try { - txn = Transaction.open(Transaction.CLOUD_DB); - // Cleanup removed accounts List removedAccounts = _accountDao.findCleanupsForRemovedAccounts(null); s_logger.info("Found " + removedAccounts.size() + " removed accounts to cleanup"); @@ -1560,7 +1560,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M Account projectAccount = getAccount(project.getProjectAccountId()); if (projectAccount == null) { s_logger.debug("Removing inactive project id=" + project.getId()); - _projectMgr.deleteProject(UserContext.current().getCaller(), UserContext.current().getCallerUserId(), project); + _projectMgr.deleteProject(CallContext.current().getCallingAccount(), CallContext.current().getCallingUserId(), project); } else { s_logger.debug("Can't remove disabled project " + project + " as it has non removed account id=" + project.getId()); } @@ -1572,11 +1572,8 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M } catch (Exception e) { s_logger.error("Exception ", e); } finally { - if (txn != null) { - txn.close(); - } - lock.unlock(); + ServerContexts.unregisterSystemContext(); } } catch (Exception e) { s_logger.error("Exception ", e); @@ -1793,7 +1790,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()); + CallContext.current().putContextParameter(User.class, user.getUuid()); return user; } diff --git a/server/src/com/cloud/user/DomainManagerImpl.java b/server/src/com/cloud/user/DomainManagerImpl.java index aad57878787..c8620616066 100644 --- a/server/src/com/cloud/user/DomainManagerImpl.java +++ b/server/src/com/cloud/user/DomainManagerImpl.java @@ -24,12 +24,14 @@ import java.util.UUID; import javax.ejb.Local; import javax.inject.Inject; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd; import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd; import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.RegionManager; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.configuration.Resource.ResourceOwnerType; import com.cloud.configuration.ResourceLimit; @@ -133,7 +135,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom @Override @ActionEvent(eventType = EventTypes.EVENT_DOMAIN_CREATE, eventDescription = "creating Domain") public Domain createDomain(String name, Long parentId, String networkDomain, String domainUUID) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (parentId == null) { parentId = Long.valueOf(DomainVO.ROOT_DOMAIN); @@ -184,7 +186,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()); + CallContext.current().putContextParameter(Domain.class, domain.getUuid()); return domain; } @@ -211,7 +213,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom @Override @ActionEvent(eventType = EventTypes.EVENT_DOMAIN_DELETE, eventDescription = "deleting Domain", async = true) public boolean deleteDomain(long domainId, Boolean cleanup) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); DomainVO domain = _domainDao.findById(domainId); @@ -281,7 +283,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom } cleanupDomainOfferings(domain.getId()); - UserContext.current().setEntityDetails(Domain.class, domain.getUuid()); + CallContext.current().putContextParameter(Domain.class, domain.getUuid()); return true; } catch (Exception ex) { s_logger.error("Exception deleting domain with id " + domain.getId(), ex); @@ -350,15 +352,15 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom for (AccountVO account : accounts) { if (account.getType() != Account.ACCOUNT_TYPE_PROJECT) { s_logger.debug("Deleting account " + account + " as a part of domain id=" + domainId + " cleanup"); - boolean deleteAccount = _accountMgr.deleteAccount(account, UserContext.current().getCallerUserId(), UserContext.current().getCaller()); + boolean deleteAccount = _accountMgr.deleteAccount(account, CallContext.current().getCallingUserId(), CallContext.current().getCallingAccount()); if (!deleteAccount) { s_logger.warn("Failed to cleanup account id=" + account.getId() + " as a part of domain cleanup"); } - success = (success && deleteAccount); + success = (success && deleteAccount); } else { ProjectVO project = _projectDao.findByProjectAccountId(account.getId()); s_logger.debug("Deleting project " + project + " as a part of domain id=" + domainId + " cleanup"); - boolean deleteProject = _projectMgr.deleteProject(UserContext.current().getCaller(), UserContext.current().getCallerUserId(), project); + boolean deleteProject = _projectMgr.deleteProject(CallContext.current().getCallingAccount(), CallContext.current().getCallingUserId(), project); if (!deleteProject) { s_logger.warn("Failed to cleanup project " + project + " as a part of domain cleanup"); } @@ -370,8 +372,8 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom boolean networksDeleted = true; s_logger.debug("Deleting networks for domain id=" + domainId); List networkIds = _networkDomainDao.listNetworkIdsByDomain(domainId); - UserContext ctx = UserContext.current(); - ReservationContext context = new ReservationContextImpl(null, null, _accountMgr.getActiveUser(ctx.getCallerUserId()), ctx.getCaller()); + CallContext ctx = CallContext.current(); + ReservationContext context = new ReservationContextImpl(null, null, _accountMgr.getActiveUser(ctx.getCallingUserId()), ctx.getCallingAccount()); for (Long networkId : networkIds) { s_logger.debug("Deleting network id=" + networkId + " as a part of domain id=" + domainId + " cleanup"); @@ -419,7 +421,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom @Override public Pair, Integer> searchForDomains(ListDomainsCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long domainId = cmd.getId(); boolean listAll = cmd.listAll(); boolean isRecursive = false; @@ -491,7 +493,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom boolean listAll = cmd.listAll(); String path = null; - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (domainId != null) { _accountMgr.checkAccess(caller, getDomain(domainId)); } else { @@ -560,7 +562,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom } // check permissions - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountMgr.checkAccess(caller, domain); // domain name is unique in the cloud @@ -606,7 +608,7 @@ public class DomainManagerImpl extends ManagerBase implements DomainManager, Dom } } _domainDao.update(domainId, domain); - UserContext.current().setEntityDetails(Domain.class, domain.getUuid()); + CallContext.current().putContextParameter(Domain.class, domain.getUuid()); txn.commit(); return _domainDao.findById(domainId); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index ef9fcbc827f..bd7a791c14d 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -58,6 +58,8 @@ import org.apache.cloudstack.api.command.user.vm.UpdateVMCmd; import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd; import org.apache.cloudstack.api.command.user.vmgroup.CreateVMGroupCmd; import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.context.ServerContexts; import org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntity; import org.apache.cloudstack.engine.service.api.OrchestrationService; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory; @@ -210,7 +212,6 @@ import com.cloud.user.ResourceLimitService; import com.cloud.user.SSHKeyPair; import com.cloud.user.SSHKeyPairVO; import com.cloud.user.User; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.VmDiskStatisticsVO; import com.cloud.user.dao.AccountDao; @@ -469,7 +470,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @ActionEvent(eventType = EventTypes.EVENT_VM_RESETPASSWORD, eventDescription = "resetting Vm password", async = true) public UserVm resetVMPassword(ResetVMPasswordCmd cmd, String password) throws ResourceUnavailableException, InsufficientCapacityException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long vmId = cmd.getId(); UserVmVO userVm = _vmDao.findById(cmd.getId()); _vmDao.loadDetails(userVm); @@ -515,7 +516,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use private boolean resetVMPasswordInternal(Long vmId, String password) throws ResourceUnavailableException, InsufficientCapacityException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); VMInstanceVO vmInstance = _vmDao.findById(vmId); if (password == null || password.equals("")) { @@ -584,7 +585,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use public UserVm resetVMSSHKey(ResetVMSSHKeyCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, cmd.getAccountName(), cmd.getDomainId(), cmd.getProjectId()); Long vmId = cmd.getId(); @@ -636,7 +637,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use } private boolean resetVMSSHKeyInternal(Long vmId, String SSHPublicKey, String password) throws ResourceUnavailableException, InsufficientCapacityException { - Long userId = UserContext.current().getCallerUserId(); + Long userId = CallContext.current().getCallingUserId(); VMInstanceVO vmInstance = _vmDao.findById(vmId); VMTemplateVO template = _templateDao.findByIdIncludingRemoved(vmInstance.getTemplateId()); @@ -754,7 +755,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use private UserVm upgradeStoppedVirtualMachine(Long vmId, Long svcOffId) throws ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters UserVmVO vmInstance = _vmDao.findById(vmId); @@ -827,7 +828,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use Long vmId = cmd.getVmId(); Long networkId = cmd.getNetworkId(); String ipAddress = cmd.getIpAddress(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); UserVmVO vmInstance = _vmDao.findById(vmId); if(vmInstance == null) { @@ -902,7 +903,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use public UserVm removeNicFromVirtualMachine(RemoveNicFromVMCmd cmd) throws InvalidParameterValueException, PermissionDeniedException, CloudRuntimeException { Long vmId = cmd.getVmId(); Long nicId = cmd.getNicId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); UserVmVO vmInstance = _vmDao.findById(vmId); if(vmInstance == null) { @@ -959,7 +960,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use public UserVm updateDefaultNicForVirtualMachine(UpdateDefaultNicForVMCmd cmd) throws InvalidParameterValueException, CloudRuntimeException { Long vmId = cmd.getVmId(); Long nicId = cmd.getNicId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); UserVmVO vmInstance = _vmDao.findById(vmId); if (vmInstance == null){ @@ -1122,7 +1123,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public boolean upgradeVirtualMachine(Long vmId, Long newServiceOfferingId) throws ResourceUnavailableException, ConcurrentOperationException, ManagementServerException, VirtualMachineMigrationException{ - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters VMInstanceVO vmInstance = _vmInstanceDao.findById(vmId); @@ -1285,7 +1286,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use throws ResourceAllocationException, CloudRuntimeException { Long vmId = cmd.getId(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Verify input parameters UserVmVO vm = _vmDao.findById(vmId.longValue()); @@ -1496,9 +1497,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public boolean expunge(UserVmVO vm, long callerUserId, Account caller) { - UserContext ctx = UserContext.current(); - ctx.setAccountId(vm.getAccountId()); - try { // expunge the vm if (!_itMgr.advanceExpunge(vm, _accountMgr.getSystemUser(), caller)) { @@ -1651,7 +1649,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public void run() { - UserContext.registerContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); + ServerContexts.registerSystemContext(); GlobalLock scanLock = GlobalLock.getInternLock("UserVMExpunge"); try { if (scanLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION)) { @@ -1685,9 +1683,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use } } finally { scanLock.releaseRef(); - UserContext.unregisterContext(); + ServerContexts.unregisterSystemContext(); } } + } private static boolean isAdmin(short accountType) { @@ -1708,7 +1707,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use Long osTypeId = cmd.getOsTypeId(); String userData = cmd.getUserData(); Boolean isDynamicallyScalable = cmd.isDynamicallyScalable(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); // Input validation UserVmVO vmInstance = null; @@ -1728,7 +1727,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use "Can't enable ha for the vm as it's created from the Service offering having HA disabled"); } - _accountMgr.checkAccess(UserContext.current().getCaller(), null, true, + _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, vmInstance); if (displayName == null) { @@ -1863,7 +1862,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @ActionEvent(eventType = EventTypes.EVENT_VM_REBOOT, eventDescription = "rebooting Vm", async = true) public UserVm rebootVirtualMachine(RebootVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long vmId = cmd.getId(); // Verify input parameters @@ -1886,7 +1885,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use throw new InvalidParameterValueException("Unable to find service offering: " + serviceOfferingId + " corresponding to the vm"); } - return rebootVirtualMachine(UserContext.current().getCallerUserId(), + return rebootVirtualMachine(CallContext.current().getCallingUserId(), vmId); } @@ -1900,7 +1899,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override @DB public InstanceGroupVO createVmGroup(CreateVMGroupCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long domainId = cmd.getDomainId(); String accountName = cmd.getAccountName(); String groupName = cmd.getGroupName(); @@ -1955,7 +1954,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public boolean deleteVmGroup(DeleteVMGroupCmd cmd) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long groupId = cmd.getId(); // Verify input parameters @@ -2108,7 +2107,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use List affinityGroupIdList) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List networkList = new ArrayList(); // Verify that caller can perform actions in behalf of vm owner @@ -2168,7 +2167,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use List affinityGroupIdList) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List networkList = new ArrayList(); boolean isSecurityGroupEnabledNetworkUsed = false; boolean isVmWare = (template.getHypervisorType() == HypervisorType.VMware || (hypervisor != null && hypervisor == HypervisorType.VMware)); @@ -2283,7 +2282,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use IpAddresses defaultIps, Boolean displayvm, String keyboard, List affinityGroupIdList) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List networkList = new ArrayList(); // Verify that caller can perform actions in behalf of vm owner @@ -2779,7 +2778,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use if (s_logger.isDebugEnabled()) { s_logger.debug("Successfully allocated DB entry for " + vm); } - UserContext.current().setEventDetails("Vm Id: " + vm.getId()); + CallContext.current().setEventDetails("Vm Id: " + vm.getId()); UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VM_CREATE, accountId, zone.getId(), vm.getId(), vm.getHostName(), offering.getId(), template.getId(), hypervisorType.toString(), @@ -3113,8 +3112,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use public UserVm stopVirtualMachine(long vmId, boolean forced) throws ConcurrentOperationException { // Input validation - Account caller = UserContext.current().getCaller(); - Long userId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + Long userId = CallContext.current().getCallingUserId(); // if account is removed, return error if (caller != null && caller.getRemoved() != null) { @@ -3155,13 +3154,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use // release elastic IP here IPAddressVO ip = _ipAddressDao.findByAssociatedVmId(profile.getId()); if (ip != null && ip.getSystem()) { - UserContext ctx = UserContext.current(); + CallContext ctx = CallContext.current(); try { long networkId = ip.getAssociatedWithNetworkId(); Network guestNetwork = _networkDao.findById(networkId); NetworkOffering offering = _configMgr.getNetworkOffering(guestNetwork.getNetworkOfferingId()); assert (offering.getAssociatePublicIP() == true) : "User VM should not have system owned public IP associated with it when offering configured not to associate public IP."; - _rulesMgr.disableStaticNat(ip.getId(), ctx.getCaller(), ctx.getCallerUserId(), true); + _rulesMgr.disableStaticNat(ip.getId(), ctx.getCallingAccount(), ctx.getCallingUserId(), true); } catch (Exception ex) { s_logger.warn( "Failed to disable static nat and release system ip " @@ -3195,9 +3194,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { // Input validation - Account callerAccount = UserContext.current().getCaller(); - UserVO callerUser = _userDao.findById(UserContext.current() - .getCallerUserId()); + Account callerAccount = CallContext.current().getCallingAccount(); + UserVO callerUser = _userDao.findById(CallContext.current() + .getCallingUserId()); // if account is removed, return error if (callerAccount != null && callerAccount.getRemoved() != null) { @@ -3227,7 +3226,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use Host destinationHost = null; if (hostId != null) { - Account account = UserContext.current().getCaller(); + Account account = CallContext.current().getCallingAccount(); if (!_accountService.isRootAdmin(account.getType())) { throw new PermissionDeniedException( "Parameter hostid can only be specified by a Root Admin, permission denied"); @@ -3329,8 +3328,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public UserVm destroyVm(long vmId) throws ResourceUnavailableException, ConcurrentOperationException { - Account caller = UserContext.current().getCaller(); - Long userId = UserContext.current().getCallerUserId(); + Account caller = CallContext.current().getCallingAccount(); + Long userId = CallContext.current().getCallingUserId(); // Verify input parameters UserVmVO vm = _vmDao.findById(vmId); @@ -3395,7 +3394,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use public void collectVmDiskStatistics (UserVmVO userVm) { // support KVM only util 2013.06.25 if (!userVm.getHypervisorType().equals(HypervisorType.KVM)) - return; + return; // Collect vm disk statistics from host before stopping Vm long hostId = userVm.getHostId(); List vmNames = new ArrayList(); @@ -3721,7 +3720,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public VirtualMachine vmStorageMigration(Long vmId, StoragePool destPool) { // access check - only root admin can migrate VM - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (s_logger.isDebugEnabled()) { s_logger.debug("Caller is not a root admin, permission denied to migrate the VM"); @@ -3794,7 +3793,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use throws ResourceUnavailableException, ConcurrentOperationException, ManagementServerException, VirtualMachineMigrationException { // access check - only root admin can migrate VM - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (s_logger.isDebugEnabled()) { s_logger.debug("Caller is not a root admin, permission denied to migrate the VM"); @@ -3920,7 +3919,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use Map volumeToPool) throws ResourceUnavailableException, ConcurrentOperationException, ManagementServerException, VirtualMachineMigrationException { // Access check - only root administrator can migrate VM. - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (s_logger.isDebugEnabled()) { s_logger.debug("Caller is not a root admin, permission denied to migrate the VM"); @@ -4044,7 +4043,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use // VERIFICATIONS and VALIDATIONS // VV 1: verify the two users - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN && caller.getType() != Account.ACCOUNT_TYPE_DOMAIN_ADMIN) { // only // root @@ -4383,7 +4382,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use // if the network offering has persistent set to true, implement the network if (requiredOfferings.get(0).getIsPersistent()) { DeployDestination dest = new DeployDestination(zone, null, null, null); - UserVO callerUser = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId()); Journal journal = new Journal.LogJournal("Implementing " + newNetwork, s_logger); ReservationContext context = new ReservationContextImpl(UUID.randomUUID().toString(), journal, callerUser, caller); @@ -4453,7 +4452,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use @Override public UserVm restoreVM(RestoreVMCmd cmd) throws InsufficientCapacityException, ResourceUnavailableException { // Input validation - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); long vmId = cmd.getVmId(); Long newTemplateId = cmd.getTemplateId(); diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java index 86871635b02..686c6888ca1 100644 --- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java +++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java @@ -28,9 +28,11 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -72,7 +74,6 @@ import com.cloud.storage.dao.SnapshotDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -232,7 +233,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana } protected Account getCaller(){ - return UserContext.current().getCaller(); + return CallContext.current().getCallingAccount(); } @Override @@ -663,7 +664,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana "VM Snapshot reverting failed due to vm snapshot is not in the state of Created."); } - UserVO callerUser = _userDao.findById(UserContext.current().getCallerUserId()); + UserVO callerUser = _userDao.findById(CallContext.current().getCallingUserId()); UserVmVO vm = null; Long hostId = null; diff --git a/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java b/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java index 52112792d14..287e6225600 100644 --- a/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java +++ b/server/src/org/apache/cloudstack/affinity/AffinityGroupServiceImpl.java @@ -28,10 +28,13 @@ import javax.naming.ConfigurationException; import org.apache.cloudstack.affinity.dao.AffinityGroupDao; import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; +import org.apache.cloudstack.context.CallContext; + import org.apache.log4j.Logger; import org.springframework.context.annotation.Primary; + import com.cloud.deploy.DeploymentPlanner; import com.cloud.event.ActionEvent; import com.cloud.event.EventTypes; @@ -41,7 +44,6 @@ import com.cloud.exception.ResourceInUseException; import com.cloud.network.security.SecurityGroup; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; import com.cloud.utils.component.ComponentContext; @@ -85,7 +87,7 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro public AffinityGroup createAffinityGroup(String account, Long domainId, String affinityGroupName, String affinityGroupType, String description) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, account, domainId, null); if (_affinityGroupDao.isNameInUse(owner.getAccountId(), owner.getDomainId(), affinityGroupName)) { @@ -127,7 +129,7 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro @ActionEvent(eventType = EventTypes.EVENT_AFFINITY_GROUP_DELETE, eventDescription = "Deleting affinity group") public boolean deleteAffinityGroup(Long affinityGroupId, String account, Long domainId, String affinityGroupName) { - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.finalizeOwner(caller, account, domainId, null); AffinityGroupVO group = null; @@ -187,7 +189,7 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro public Pair, Integer> listAffinityGroups(Long affinityGroupId, String affinityGroupName, String affinityGroupType, Long vmId, Long startIndex, Long pageSize) { Filter searchFilter = new Filter(AffinityGroupVO.class, "id", Boolean.TRUE, startIndex, pageSize); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Long accountId = caller.getAccountId(); Long domainId = caller.getDomainId(); @@ -329,7 +331,7 @@ public class AffinityGroupServiceImpl extends ManagerBase implements AffinityGro + "; make sure the virtual machine is stopped and not in an error state before updating."); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); Account owner = _accountMgr.getAccount(vmInstance.getAccountId()); // check that the affinity groups exist diff --git a/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java b/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java index ac3b8f56e61..560768c1a8f 100644 --- a/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java +++ b/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java @@ -26,8 +26,10 @@ import javax.inject.Inject; import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.command.user.loadbalancer.ListApplicationLoadBalancersCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; + import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@ -59,7 +61,6 @@ import com.cloud.tags.ResourceTagVO; import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; @@ -99,7 +100,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A throw new InvalidParameterValueException("Can't find guest network by id"); } - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); _accountMgr.checkAccess(caller, AccessType.UseNetwork, false, guestNtwk); Network sourceIpNtwk = _networkModel.getNetwork(sourceIpNetworkId); @@ -166,7 +167,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A } s_logger.debug("Load balancer " + newRule.getId() + " for Ip address " + newRule.getSourceIp().addr() + ", source port " + newRule.getSourcePortStart() + ", instance port " + newRule.getDefaultPortStart() + " is added successfully."); - UserContext.current().setEventDetails("Load balancer Id: " + newRule.getId()); + CallContext.current().setEventDetails("Load balancer Id: " + newRule.getId()); Network ntwk = _networkModel.getNetwork(newRule.getNetworkId()); UsageEventUtils.publishUsageEvent(EventTypes.EVENT_LOAD_BALANCER_CREATE, newRule.getAccountId(), ntwk.getDataCenterId(), newRule.getId(), null, LoadBalancingRule.class.getName(), @@ -373,7 +374,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A Map tags = cmd.getTags(); - Account caller = UserContext.current().getCaller(); + Account caller = CallContext.current().getCallingAccount(); List permittedAccounts = new ArrayList(); Ternary domainIdRecursiveListProject = new Ternary( diff --git a/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java b/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java index ad36fae60ec..38ba37cd199 100644 --- a/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java +++ b/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java @@ -34,20 +34,23 @@ import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancingRulesService; import com.cloud.user.Account; import com.cloud.user.AccountManager; -import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.db.DB; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; + import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.api.command.user.region.ha.gslb.*; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.Region; import org.apache.cloudstack.region.dao.RegionDao; + import org.apache.log4j.Logger; import javax.ejb.Local; import javax.inject.Inject; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -150,8 +153,8 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR "Assigning a load balancer rule to global load balancer rule", async=true) public boolean assignToGlobalLoadBalancerRule(AssignToGlobalLoadBalancerRuleCmd assignToGslbCmd) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); long gslbRuleId = assignToGslbCmd.getGlobalLoadBalancerRuleId(); GlobalLoadBalancerRuleVO gslbRule = _gslbRuleDao.findById(gslbRuleId); @@ -292,8 +295,8 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR "Removing a load balancer rule to be part of global load balancer rule") public boolean removeFromGlobalLoadBalancerRule(RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); long gslbRuleId = removeFromGslbCmd.getGlobalLoadBalancerRuleId(); GlobalLoadBalancerRuleVO gslbRule = _gslbRuleDao.findById(gslbRuleId); @@ -405,8 +408,8 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR "Delete global load balancer rule") public boolean deleteGlobalLoadBalancerRule(DeleteGlobalLoadBalancerRuleCmd deleteGslbCmd) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); long gslbRuleId = deleteGslbCmd.getGlobalLoadBalancerId(); try { @@ -493,8 +496,8 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Invalid global load balancer rule id: " + gslbRuleId); } - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); _accountMgr.checkAccess(caller, SecurityChecker.AccessType.ModifyEntry, true, gslbRule); @@ -541,8 +544,8 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR @Override public List listGlobalLoadBalancerRule(ListGlobalLoadBalancerRuleCmd listGslbCmd) { - UserContext ctx = UserContext.current(); - Account caller = ctx.getCaller(); + CallContext ctx = CallContext.current(); + Account caller = ctx.getCallingAccount(); Integer regionId = listGslbCmd.getRegionId(); Long ruleId = listGslbCmd.getId(); diff --git a/server/test/com/cloud/configuration/ConfigurationManagerTest.java b/server/test/com/cloud/configuration/ConfigurationManagerTest.java index 5c1cabfe774..eb362b7dff5 100755 --- a/server/test/com/cloud/configuration/ConfigurationManagerTest.java +++ b/server/test/com/cloud/configuration/ConfigurationManagerTest.java @@ -17,25 +17,38 @@ package com.cloud.configuration; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyBoolean; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; + +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import java.lang.reflect.Field; -import org.apache.cloudstack.api.command.admin.vlan.DedicatePublicIpRangeCmd; -import org.apache.cloudstack.api.command.admin.vlan.ReleasePublicIpRangeCmd; +import junit.framework.Assert; + import org.apache.log4j.Logger; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.apache.cloudstack.api.command.admin.vlan.DedicatePublicIpRangeCmd; +import org.apache.cloudstack.api.command.admin.vlan.ReleasePublicIpRangeCmd; +import org.apache.cloudstack.context.CallContext; + import com.cloud.configuration.Resource.ResourceType; import com.cloud.dc.AccountVlanMapVO; +import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenterVO; import com.cloud.dc.Vlan; import com.cloud.dc.VlanVO; -import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.dao.AccountVlanMapDao; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.VlanDao; @@ -48,17 +61,11 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.utils.db.Transaction; import com.cloud.utils.net.Ip; -import junit.framework.Assert; - -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.doNothing; - public class ConfigurationManagerTest { private static final Logger s_logger = Logger.getLogger(ConfigurationManagerTest.class); @@ -98,11 +105,14 @@ public class ConfigurationManagerTest { configurationMgr._zoneDao = _zoneDao; configurationMgr._firewallDao = _firewallDao; - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(configurationMgr._accountMgr.getAccount(anyLong())).thenReturn(account); when(configurationMgr._accountDao.findActiveAccount(anyString(), anyLong())).thenReturn(account); when(configurationMgr._accountMgr.getActiveAccountById(anyLong())).thenReturn(account); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + CallContext.register(user, account); + when(configurationMgr._publicIpAddressDao.countIPs(anyLong(), anyLong(), anyBoolean())).thenReturn(1); doNothing().when(configurationMgr._resourceLimitMgr).checkResourceLimit(any(Account.class), @@ -112,8 +122,6 @@ public class ConfigurationManagerTest { when(configurationMgr._vlanDao.acquireInLockTable(anyLong(), anyInt())).thenReturn(vlan); - UserContext.registerContext(1, account, null, true); - Field dedicateIdField = _dedicatePublicIpRangeClass.getDeclaredField("id"); dedicateIdField.setAccessible(true); dedicateIdField.set(dedicatePublicIpRangesCmd, 1L); @@ -135,6 +143,11 @@ public class ConfigurationManagerTest { releaseIdField.set(releasePublicIpRangesCmd, 1L); } + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testDedicatePublicIpRange() throws Exception { @@ -400,12 +413,14 @@ public class ConfigurationManagerTest { public class DedicatePublicIpRangeCmdExtn extends DedicatePublicIpRangeCmd { + @Override public long getEntityOwnerId() { return 1; } } public class ReleasePublicIpRangeCmdExtn extends ReleasePublicIpRangeCmd { + @Override public long getEntityOwnerId() { return 1; } diff --git a/server/test/com/cloud/network/DedicateGuestVlanRangesTest.java b/server/test/com/cloud/network/DedicateGuestVlanRangesTest.java index e5d33296b00..d6ee630569e 100644 --- a/server/test/com/cloud/network/DedicateGuestVlanRangesTest.java +++ b/server/test/com/cloud/network/DedicateGuestVlanRangesTest.java @@ -17,21 +17,32 @@ package com.cloud.network; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; + +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import java.lang.reflect.Field; -import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd; -import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd; -import org.apache.cloudstack.api.command.admin.network.ReleaseDedicatedGuestVlanRangeCmd; +import junit.framework.Assert; import org.apache.log4j.Logger; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd; +import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd; +import org.apache.cloudstack.api.command.admin.network.ReleaseDedicatedGuestVlanRangeCmd; +import org.apache.cloudstack.context.CallContext; + import com.cloud.dc.DataCenterVnetVO; import com.cloud.dc.dao.DataCenterVnetDao; import com.cloud.network.dao.AccountGuestVlanMapDao; @@ -40,18 +51,12 @@ import com.cloud.network.dao.PhysicalNetworkDao; import com.cloud.network.dao.PhysicalNetworkVO; import com.cloud.projects.ProjectManager; import com.cloud.user.Account; -import com.cloud.user.dao.AccountDao; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; +import com.cloud.user.dao.AccountDao; import com.cloud.utils.db.Transaction; -import junit.framework.Assert; - -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.doNothing; - public class DedicateGuestVlanRangesTest { private static final Logger s_logger = Logger.getLogger(DedicateGuestVlanRangesTest.class); @@ -86,11 +91,13 @@ public class DedicateGuestVlanRangesTest { networkService._datacneter_vnet = _dataCenterVnetDao; networkService._accountGuestVlanMapDao = _accountGuestVlanMapDao; - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(networkService._accountMgr.getAccount(anyLong())).thenReturn(account); when(networkService._accountDao.findActiveAccount(anyString(), anyLong())).thenReturn(account); + + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); - UserContext.registerContext(1, account, null, true); + CallContext.register(user, account); Field accountNameField = _dedicateGuestVlanRangeClass.getDeclaredField("accountName"); accountNameField.setAccessible(true); @@ -113,6 +120,11 @@ public class DedicateGuestVlanRangesTest { releaseIdField.set(releaseDedicatedGuestVlanRangesCmd, 1L); } + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testDedicateGuestVlanRange() throws Exception { s_logger.info("Running tests for DedicateGuestVlanRange API"); @@ -359,18 +371,21 @@ public class DedicateGuestVlanRangesTest { } public class DedicateGuestVlanRangeCmdExtn extends DedicateGuestVlanRangeCmd { + @Override public long getEntityOwnerId() { return 1; } } public class ReleaseDedicatedGuestVlanRangeCmdExtn extends ReleaseDedicatedGuestVlanRangeCmd { + @Override public long getEntityOwnerId() { return 1; } } public class ListDedicatedGuestVlanRangesCmdExtn extends ListDedicatedGuestVlanRangesCmd { + @Override public long getEntityOwnerId() { return 1; } diff --git a/server/test/com/cloud/vm/UserVmManagerTest.java b/server/test/com/cloud/vm/UserVmManagerTest.java index 5eedfa5d815..0eb9a089609 100755 --- a/server/test/com/cloud/vm/UserVmManagerTest.java +++ b/server/test/com/cloud/vm/UserVmManagerTest.java @@ -24,24 +24,30 @@ import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.lang.reflect.Field; import java.util.List; import java.util.UUID; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; + import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd; import org.apache.cloudstack.api.command.user.vm.RestoreVMCmd; import org.apache.cloudstack.api.command.user.vm.ScaleVMCmd; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.mockito.Spy; +import org.apache.cloudstack.context.CallContext; import com.cloud.capacity.CapacityManager; import com.cloud.configuration.ConfigurationManager; @@ -56,18 +62,17 @@ import com.cloud.hypervisor.Hypervisor; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.offering.ServiceOffering; import com.cloud.service.ServiceOfferingVO; +import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.VMTemplateVO; import com.cloud.storage.Volume; import com.cloud.storage.VolumeManager; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VolumeDao; -import com.cloud.storage.Storage.ImageFormat; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountService; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; @@ -138,7 +143,15 @@ public class UserVmManagerTest { when(_vmDao.findById(anyLong())).thenReturn(_vmMock); when(_templateDao.findById(anyLong())).thenReturn(_templateMock); doReturn(VirtualMachine.State.Error).when(_vmMock).getState(); - _userVmMgr.restoreVMInternal(_account, _vmMock, null); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.restoreVMInternal(_account, _vmMock, null); + } finally { + CallContext.unregister(); + } } // Test restoreVm when VM is in stopped state @@ -160,7 +173,15 @@ public class UserVmManagerTest { when(_templateMock.getUuid()).thenReturn("e0552266-7060-11e2-bbaa-d55f5db67735"); - _userVmMgr.restoreVMInternal(_account, _vmMock, null); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.restoreVMInternal(_account, _vmMock, null); + } finally { + CallContext.unregister(); + } } @@ -185,7 +206,15 @@ public class UserVmManagerTest { when(_templateMock.getUuid()).thenReturn("e0552266-7060-11e2-bbaa-d55f5db67735"); - _userVmMgr.restoreVMInternal(_account, _vmMock, null); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.restoreVMInternal(_account, _vmMock, null); + } finally { + CallContext.unregister(); + } } @@ -216,7 +245,15 @@ public class UserVmManagerTest { when(_templateMock.getUuid()).thenReturn("b1a3626e-72e0-4697-8c7c-a110940cc55d"); - _userVmMgr.restoreVMInternal(_account, _vmMock, 14L); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.restoreVMInternal(_account, _vmMock, 14L); + } finally { + CallContext.unregister(); + } } @@ -249,7 +286,15 @@ public class UserVmManagerTest { when(_templateMock.getUuid()).thenReturn("b1a3626e-72e0-4697-8c7c-a110940cc55d"); - _userVmMgr.restoreVMInternal(_account, _vmMock, 14L); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.restoreVMInternal(_account, _vmMock, 14L); + } finally { + CallContext.unregister(); + } verify(_vmMock, times(1)).setIsoId(14L); @@ -269,14 +314,19 @@ public class UserVmManagerTest { serviceOfferingIdField.setAccessible(true); serviceOfferingIdField.set(cmd, 1L); - // UserContext.current().setEventDetails("Vm Id: "+getId()); - Account account = (Account) new AccountVO("testaccount", 1L, "networkdomain", (short) 0, "uuid"); - //AccountVO(String accountName, long domainId, String networkDomain, short type, int regionId) - UserContext.registerContext(1, account, null, true); - when(_vmInstanceDao.findById(anyLong())).thenReturn(_vmInstance); - _userVmMgr.upgradeVirtualMachine(cmd); + // UserContext.current().setEventDetails("Vm Id: "+getId()); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short) 0, "uuid"); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + try { + _userVmMgr.upgradeVirtualMachine(cmd); + } finally { + CallContext.unregister(); + } + } @@ -306,13 +356,20 @@ public class UserVmManagerTest { doNothing().when(_itMgr).checkIfCanUpgrade(_vmMock, cmd.getServiceOfferingId()); - ServiceOffering so1 = (ServiceOffering) getSvcoffering(512); - ServiceOffering so2 = (ServiceOffering) getSvcoffering(256); + ServiceOffering so1 = getSvcoffering(512); + ServiceOffering so2 = getSvcoffering(256); when(_configMgr.getServiceOffering(anyLong())).thenReturn(so1); when(_configMgr.getServiceOffering(1L)).thenReturn(so1); - _userVmMgr.upgradeVirtualMachine(cmd); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, UUID.randomUUID().toString()); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + CallContext.register(user, account); + try { + _userVmMgr.upgradeVirtualMachine(cmd); + } finally { + CallContext.unregister(); + } } @@ -331,17 +388,13 @@ public class UserVmManagerTest { serviceOfferingIdField.setAccessible(true); serviceOfferingIdField.set(cmd, 1L); - //UserContext.current().setEventDetails("Vm Id: "+getId()); - //Account account = (Account) new AccountVO("testaccount", 1L, "networkdomain", (short) 0, 1); - //AccountVO(String accountName, long domainId, String networkDomain, short type, int regionId) - //UserContext.registerContext(1, account, null, true); when(_vmInstanceDao.findById(anyLong())).thenReturn(_vmInstance); doReturn(Hypervisor.HypervisorType.XenServer).when(_vmInstance).getHypervisorType(); - ServiceOffering so1 = (ServiceOffering) getSvcoffering(512); - ServiceOffering so2 = (ServiceOffering) getSvcoffering(256); + ServiceOffering so1 = getSvcoffering(512); + ServiceOffering so2 = getSvcoffering(256); when(_configMgr.getServiceOffering(anyLong())).thenReturn(so2); when(_configMgr.getServiceOffering(1L)).thenReturn(so1); @@ -354,7 +407,14 @@ public class UserVmManagerTest { //when(_vmDao.findById(anyLong())).thenReturn(_vmMock); - _userVmMgr.upgradeVirtualMachine(cmd); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, UUID.randomUUID().toString()); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + CallContext.register(user, account); + try { + _userVmMgr.upgradeVirtualMachine(cmd); + } finally { + CallContext.unregister(); + } } @@ -380,8 +440,8 @@ public class UserVmManagerTest { when(_vmInstanceDao.findById(anyLong())).thenReturn(_vmInstance); doReturn(Hypervisor.HypervisorType.XenServer).when(_vmInstance).getHypervisorType(); - ServiceOffering so1 = (ServiceOffering) getSvcoffering(512); - ServiceOffering so2 = (ServiceOffering) getSvcoffering(256); + ServiceOffering so1 = getSvcoffering(512); + ServiceOffering so2 = getSvcoffering(256); when(_configMgr.getServiceOffering(anyLong())).thenReturn(so2); when(_configMgr.getServiceOffering(1L)).thenReturn(so1); @@ -396,7 +456,14 @@ public class UserVmManagerTest { when(_vmDao.findById(anyLong())).thenReturn(_vmMock); - _userVmMgr.upgradeVirtualMachine(cmd); + Account account = new AccountVO("testaccount", 1L, "networkdomain", (short)0, UUID.randomUUID().toString()); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + CallContext.register(user, account); + try { + _userVmMgr.upgradeVirtualMachine(cmd); + } finally { + CallContext.unregister(); + } } @@ -435,11 +502,17 @@ public class UserVmManagerTest { domainIdField.set(cmd, 1L); // caller is of type 0 - Account caller = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, + Account caller = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); - UserContext.registerContext(1, caller, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, caller); + try { _userVmMgr.moveVMToUser(cmd); + } finally { + CallContext.unregister(); + } } @@ -462,13 +535,13 @@ public class UserVmManagerTest { domainIdField.set(cmd, 1L); // caller is of type 0 - Account caller = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 1, - UUID.randomUUID().toString()); - UserContext.registerContext(1, caller, null, true); + Account caller = new AccountVO("testaccount", 1, "networkdomain", (short)1, UUID.randomUUID().toString()); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); - Account oldAccount = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, + + Account oldAccount = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); - Account newAccount = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 1, + Account newAccount = new AccountVO("testaccount", 1, "networkdomain", (short) 1, UUID.randomUUID().toString()); UserVmVO vm = new UserVmVO(10L, "test", "test", 1L, HypervisorType.Any, 1L, false, false, 1L, 1L, @@ -483,7 +556,12 @@ public class UserVmManagerTest { doThrow(new PermissionDeniedException("Access check failed")).when(_accountMgr).checkAccess(any(Account.class), any(AccessType.class), any(Boolean.class), any(ControlledEntity.class)); - _userVmMgr.moveVMToUser(cmd); + CallContext.register(user, caller); + try { + _userVmMgr.moveVMToUser(cmd); + } finally { + CallContext.unregister(); + } } } \ No newline at end of file diff --git a/server/test/com/cloud/vpc/NetworkACLManagerTest.java b/server/test/com/cloud/vpc/NetworkACLManagerTest.java index ddcfe7fabb7..446e4e15a32 100644 --- a/server/test/com/cloud/vpc/NetworkACLManagerTest.java +++ b/server/test/com/cloud/vpc/NetworkACLManagerTest.java @@ -15,6 +15,35 @@ package com.cloud.vpc; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import javax.inject.Inject; + +import junit.framework.TestCase; + +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.FilterType; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.core.type.filter.TypeFilter; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.test.utils.SpringUtils; + import com.cloud.configuration.ConfigurationManager; import com.cloud.network.Network; import com.cloud.network.NetworkManager; @@ -35,32 +64,9 @@ import com.cloud.tags.dao.ResourceTagDao; import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.exception.CloudRuntimeException; -import junit.framework.TestCase; -import org.apache.cloudstack.test.utils.SpringUtils; -import org.apache.log4j.Logger; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.FilterType; -import org.springframework.core.type.classreading.MetadataReader; -import org.springframework.core.type.classreading.MetadataReaderFactory; -import org.springframework.core.type.filter.TypeFilter; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import javax.inject.Inject; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) @@ -90,15 +96,24 @@ public class NetworkACLManagerTest extends TestCase{ private static final Logger s_logger = Logger.getLogger( NetworkACLManagerTest.class); + @Override @Before public void setUp() { ComponentContext.initComponentsLifeCycle(); Account account = new AccountVO("testaccount", 1, "testdomain", (short) 0, UUID.randomUUID().toString()); - UserContext.registerContext(1, account, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); acl = Mockito.mock(NetworkACLVO.class); aclItem = Mockito.mock(NetworkACLItemVO.class); } + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testCreateACL() throws Exception { Mockito.when(_networkACLDao.persist(Mockito.any(NetworkACLVO.class))).thenReturn(acl); diff --git a/server/test/com/cloud/vpc/NetworkACLServiceTest.java b/server/test/com/cloud/vpc/NetworkACLServiceTest.java index e71fabfef2d..b2588aadf3a 100644 --- a/server/test/com/cloud/vpc/NetworkACLServiceTest.java +++ b/server/test/com/cloud/vpc/NetworkACLServiceTest.java @@ -15,23 +15,15 @@ package com.cloud.vpc; -import com.cloud.exception.InvalidParameterValueException; -import com.cloud.network.NetworkManager; -import com.cloud.network.NetworkModel; -import com.cloud.network.dao.NetworkDao; -import com.cloud.network.vpc.*; -import com.cloud.network.vpc.dao.NetworkACLDao; -import com.cloud.network.vpc.dao.VpcGatewayDao; -import com.cloud.tags.dao.ResourceTagDao; -import com.cloud.user.Account; -import com.cloud.user.AccountManager; -import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; -import com.cloud.utils.component.ComponentContext; +import java.io.IOException; +import java.util.UUID; + +import javax.inject.Inject; + import junit.framework.TestCase; -import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd; -import org.apache.cloudstack.test.utils.SpringUtils; + import org.apache.log4j.Logger; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -47,9 +39,31 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.inject.Inject; -import java.io.IOException; -import java.util.UUID; +import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.test.utils.SpringUtils; + +import com.cloud.exception.InvalidParameterValueException; +import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.vpc.NetworkACLItem; +import com.cloud.network.vpc.NetworkACLItemDao; +import com.cloud.network.vpc.NetworkACLItemVO; +import com.cloud.network.vpc.NetworkACLManager; +import com.cloud.network.vpc.NetworkACLService; +import com.cloud.network.vpc.NetworkACLServiceImpl; +import com.cloud.network.vpc.NetworkACLVO; +import com.cloud.network.vpc.VpcManager; +import com.cloud.network.vpc.VpcVO; +import com.cloud.network.vpc.dao.NetworkACLDao; +import com.cloud.network.vpc.dao.VpcGatewayDao; +import com.cloud.tags.dao.ResourceTagDao; +import com.cloud.user.Account; +import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.user.UserVO; +import com.cloud.utils.component.ComponentContext; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) @@ -74,11 +88,14 @@ public class NetworkACLServiceTest extends TestCase{ private static final Logger s_logger = Logger.getLogger( NetworkACLServiceTest.class); + @Override @Before public void setUp() { ComponentContext.initComponentsLifeCycle(); Account account = new AccountVO("testaccount", 1, "testdomain", (short) 0, UUID.randomUUID().toString()); - UserContext.registerContext(1, account, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); createACLItemCmd = new CreateNetworkACLCmd(){ @Override @@ -118,6 +135,12 @@ public class NetworkACLServiceTest extends TestCase{ }; } + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testCreateACL() throws Exception { Mockito.when(_vpcMgr.getVpc(Mockito.anyLong())).thenReturn(new VpcVO()); diff --git a/server/test/com/cloud/vpc/VpcTest.java b/server/test/com/cloud/vpc/VpcTest.java index 52e837ec5ca..24c011b5cb8 100644 --- a/server/test/com/cloud/vpc/VpcTest.java +++ b/server/test/com/cloud/vpc/VpcTest.java @@ -15,43 +15,15 @@ package com.cloud.vpc; -import com.cloud.configuration.ConfigurationManager; -import com.cloud.configuration.dao.ConfigurationDao; -import com.cloud.dc.dao.DataCenterDao; -import com.cloud.dc.dao.VlanDao; -import com.cloud.network.NetworkManager; -import com.cloud.network.NetworkModel; -import com.cloud.network.NetworkService; -import com.cloud.network.dao.FirewallRulesDao; -import com.cloud.network.dao.IPAddressDao; -import com.cloud.network.dao.NetworkDao; -import com.cloud.network.dao.PhysicalNetworkDao; -import com.cloud.network.dao.Site2SiteVpnGatewayDao; -import com.cloud.network.vpc.*; -import com.cloud.network.vpc.dao.PrivateIpDao; -import com.cloud.network.vpc.dao.StaticRouteDao; -import com.cloud.network.vpc.dao.VpcDao; -import com.cloud.network.vpc.dao.VpcGatewayDao; -import com.cloud.network.vpc.dao.VpcOfferingDao; -import com.cloud.network.vpc.dao.VpcOfferingServiceMapDao; -import com.cloud.network.vpc.dao.VpcServiceMapDao; -import com.cloud.network.vpn.Site2SiteVpnManager; -import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; -import com.cloud.server.ConfigurationServer; -import com.cloud.tags.dao.ResourceTagDao; -import com.cloud.user.Account; -import com.cloud.user.AccountManager; -import com.cloud.user.AccountVO; -import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; -import com.cloud.utils.component.ComponentContext; -import com.cloud.vm.dao.DomainRouterDao; +import java.io.IOException; +import java.util.UUID; + +import javax.inject.Inject; import junit.framework.TestCase; -import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd; -import org.apache.cloudstack.api.command.user.vpc.CreateVPCCmd; -import org.apache.cloudstack.test.utils.SpringUtils; + import org.apache.log4j.Logger; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -67,9 +39,45 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.inject.Inject; -import java.io.IOException; -import java.util.UUID; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.test.utils.SpringUtils; + +import com.cloud.configuration.ConfigurationManager; +import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.dc.dao.VlanDao; +import com.cloud.network.NetworkManager; +import com.cloud.network.NetworkModel; +import com.cloud.network.NetworkService; +import com.cloud.network.dao.FirewallRulesDao; +import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.dao.PhysicalNetworkDao; +import com.cloud.network.dao.Site2SiteVpnGatewayDao; +import com.cloud.network.vpc.NetworkACLManager; +import com.cloud.network.vpc.Vpc; +import com.cloud.network.vpc.VpcManager; +import com.cloud.network.vpc.VpcOfferingVO; +import com.cloud.network.vpc.VpcService; +import com.cloud.network.vpc.VpcVO; +import com.cloud.network.vpc.dao.PrivateIpDao; +import com.cloud.network.vpc.dao.StaticRouteDao; +import com.cloud.network.vpc.dao.VpcDao; +import com.cloud.network.vpc.dao.VpcGatewayDao; +import com.cloud.network.vpc.dao.VpcOfferingDao; +import com.cloud.network.vpc.dao.VpcOfferingServiceMapDao; +import com.cloud.network.vpc.dao.VpcServiceMapDao; +import com.cloud.network.vpn.Site2SiteVpnManager; +import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; +import com.cloud.server.ConfigurationServer; +import com.cloud.tags.dao.ResourceTagDao; +import com.cloud.user.Account; +import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.user.ResourceLimitService; +import com.cloud.user.UserVO; +import com.cloud.utils.component.ComponentContext; +import com.cloud.vm.dao.DomainRouterDao; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) @@ -93,14 +101,23 @@ public class VpcTest extends TestCase { private VpcVO vpc; private static final Logger s_logger = Logger.getLogger(VpcTest.class); + @Override @Before public void setUp() { ComponentContext.initComponentsLifeCycle(); Account account = new AccountVO("testaccount", 1, "testdomain", (short) 0, UUID.randomUUID().toString()); - UserContext.registerContext(1, account, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); vpc = new VpcVO(1, "myvpc", "myvpc", 2, 1, 1, "10.0.1.0/16", "mydomain"); } + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testCreateVpc() throws Exception { Mockito.when( diff --git a/server/test/org/apache/cloudstack/affinity/AffinityApiUnitTest.java b/server/test/org/apache/cloudstack/affinity/AffinityApiUnitTest.java index 8c1c1148a37..d62b4ff4164 100644 --- a/server/test/org/apache/cloudstack/affinity/AffinityApiUnitTest.java +++ b/server/test/org/apache/cloudstack/affinity/AffinityApiUnitTest.java @@ -17,7 +17,6 @@ package org.apache.cloudstack.affinity; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyObject; @@ -28,13 +27,12 @@ import static org.mockito.Mockito.when; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.affinity.dao.AffinityGroupDao; -import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; -import org.apache.cloudstack.test.utils.SpringUtils; +import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -52,8 +50,13 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.cloud.dc.dao.DedicatedResourceDao; -import com.cloud.event.ActionEventUtils; +import org.apache.cloudstack.affinity.dao.AffinityGroupDao; +import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.test.utils.SpringUtils; + +import com.cloud.dc.dao.DedicatedResourceDao; +import com.cloud.event.ActionEventUtils; import com.cloud.event.EventVO; import com.cloud.event.dao.EventDao; import com.cloud.exception.InvalidParameterValueException; @@ -63,14 +66,12 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountService; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; +import com.cloud.user.dao.UserDao; import com.cloud.utils.component.ComponentContext; -import com.cloud.utils.db.SearchBuilder; -import com.cloud.utils.db.SearchCriteria; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; -import com.cloud.user.dao.UserDao; import com.cloud.vm.dao.UserVmDao; @RunWith(SpringJUnit4ClassRunner.class) @@ -115,18 +116,20 @@ public class AffinityApiUnitTest { @BeforeClass - public static void setUp() throws ConfigurationException { + public static void setUpClass() throws ConfigurationException { } @Before - public void testSetUp() { + public void setUp() { ComponentContext.initComponentsLifeCycle(); AccountVO acct = new AccountVO(200L); acct.setType(Account.ACCOUNT_TYPE_NORMAL); acct.setAccountName("user"); acct.setDomainId(domainId); - UserContext.registerContext(1, acct, null, true); + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, acct); when(_acctMgr.finalizeOwner((Account) anyObject(), anyString(), anyLong(), anyLong())).thenReturn(acct); when(_processor.getType()).thenReturn("mock"); @@ -141,6 +144,11 @@ public class AffinityApiUnitTest { Mockito.when(_eventDao.persist(Mockito.any(EventVO.class))).thenReturn(new EventVO()); } + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void createAffinityGroupTest() { when(_groupDao.isNameInUse(anyLong(), anyLong(), eq("group1"))).thenReturn(false); diff --git a/server/test/org/apache/cloudstack/lb/ApplicationLoadBalancerTest.java b/server/test/org/apache/cloudstack/lb/ApplicationLoadBalancerTest.java index 461cbbdf012..bd2374fb3fb 100644 --- a/server/test/org/apache/cloudstack/lb/ApplicationLoadBalancerTest.java +++ b/server/test/org/apache/cloudstack/lb/ApplicationLoadBalancerTest.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -24,9 +24,7 @@ import javax.inject.Inject; import junit.framework.TestCase; -import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; -import org.apache.cloudstack.network.lb.ApplicationLoadBalancerManagerImpl; -import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -34,6 +32,11 @@ import org.mockito.Mockito; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; +import org.apache.cloudstack.network.lb.ApplicationLoadBalancerManagerImpl; +import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; + import com.cloud.event.dao.UsageEventDao; import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientVirtualNetworkCapcityException; @@ -53,7 +56,6 @@ import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.utils.component.ComponentContext; import com.cloud.utils.exception.CloudRuntimeException; @@ -94,6 +96,7 @@ public class ApplicationLoadBalancerTest extends TestCase{ + @Override @Before public void setUp() { ComponentContext.initComponentsLifeCycle(); @@ -133,7 +136,7 @@ public class ApplicationLoadBalancerTest extends TestCase{ Mockito.when(_accountMgr.getSystemUser()).thenReturn(new UserVO(1)); Mockito.when(_accountMgr.getSystemAccount()).thenReturn(new AccountVO(2)); - UserContext.registerContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); + CallContext.register(_accountMgr.getSystemUser(), _accountMgr.getSystemAccount()); Mockito.when(_ntwkModel.areServicesSupportedInNetwork(Mockito.anyLong(), Mockito.any(Network.Service.class))).thenReturn(true); @@ -146,6 +149,12 @@ public class ApplicationLoadBalancerTest extends TestCase{ } + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + /** * TESTS FOR .getApplicationLoadBalancer */ @@ -165,7 +174,7 @@ public class ApplicationLoadBalancerTest extends TestCase{ try { rule = _appLbSvc.getApplicationLoadBalancer(nonExistingLbId); if (rule != null) { - notFound = false; + notFound = false; } } catch (InvalidParameterValueException ex) { notFound = true; @@ -182,11 +191,11 @@ public class ApplicationLoadBalancerTest extends TestCase{ @Test //Positive test - delete existing lb public void deleteExistingLoadBalancer() { - boolean result = false; + boolean result = false; try { result = _appLbSvc.deleteApplicationLoadBalancer(existingLbId); } finally { - assertTrue("Couldn't delete existing application load balancer", result); + assertTrue("Couldn't delete existing application load balancer", result); } } @@ -204,17 +213,17 @@ public class ApplicationLoadBalancerTest extends TestCase{ /** * TESTS FOR .createApplicationLoadBalancer - * @throws NetworkRuleConflictException - * @throws InsufficientVirtualNetworkCapcityException - * @throws InsufficientAddressCapacityException + * @throws NetworkRuleConflictException + * @throws InsufficientVirtualNetworkCapcityException + * @throws InsufficientAddressCapacityException */ @Test (expected = CloudRuntimeException.class) //Positive test public void createValidLoadBalancer() throws InsufficientAddressCapacityException, - InsufficientVirtualNetworkCapcityException, NetworkRuleConflictException { + InsufficientVirtualNetworkCapcityException, NetworkRuleConflictException { _appLbSvc.createApplicationLoadBalancer("alena", "alena", Scheme.Internal, validGuestNetworkId, validRequestedIp, - 22, 22, "roundrobin", validGuestNetworkId, validAccountId); + 22, 22, "roundrobin", validGuestNetworkId, validAccountId); } @@ -230,7 +239,7 @@ public class ApplicationLoadBalancerTest extends TestCase{ @Test(expected = InvalidParameterValueException.class) //Negative test - invalid SourcePort public void createWithInvalidSourcePort() throws InsufficientAddressCapacityException, - InsufficientVirtualNetworkCapcityException, NetworkRuleConflictException { + InsufficientVirtualNetworkCapcityException, NetworkRuleConflictException { _appLbSvc.createApplicationLoadBalancer("alena", "alena", Scheme.Internal, validGuestNetworkId, validRequestedIp, 65536, 22, "roundrobin", validGuestNetworkId, validAccountId); } diff --git a/server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java b/server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java index 27faa4dcf00..7760123c46a 100644 --- a/server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java +++ b/server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java @@ -19,12 +19,6 @@ package org.apache.cloudstack.networkoffering; import java.io.IOException; - -import org.apache.cloudstack.acl.SecurityChecker; -import org.apache.cloudstack.region.PortableIpDaoImpl; -import org.apache.cloudstack.region.dao.RegionDaoImpl; -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDaoImpl; -import org.apache.cloudstack.test.utils.SpringUtils; import org.mockito.Mockito; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -35,7 +29,15 @@ import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.filter.TypeFilter; +import org.apache.cloudstack.acl.SecurityChecker; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; +import org.apache.cloudstack.region.PortableIpDaoImpl; +import org.apache.cloudstack.region.PortableIpRangeDaoImpl; +import org.apache.cloudstack.region.dao.RegionDaoImpl; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDaoImpl; +import org.apache.cloudstack.test.utils.SpringUtils; + import com.cloud.agent.AgentManager; import com.cloud.alert.AlertManager; import com.cloud.api.query.dao.UserAccountJoinDaoImpl; @@ -106,8 +108,6 @@ import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.user.AccountDetailsDao; import com.cloud.user.AccountManager; import com.cloud.user.ResourceLimitService; -import com.cloud.user.UserContext; -import com.cloud.user.UserContextInitializer; import com.cloud.user.dao.AccountDaoImpl; import com.cloud.user.dao.UserDaoImpl; import com.cloud.vm.dao.InstanceGroupDaoImpl; @@ -115,7 +115,6 @@ import com.cloud.vm.dao.NicDaoImpl; import com.cloud.vm.dao.NicSecondaryIpDaoImpl; import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDaoImpl; -import org.apache.cloudstack.region.PortableIpRangeDaoImpl; @Configuration @ComponentScan(basePackageClasses={ @@ -296,13 +295,8 @@ public class ChildTestConfiguration { } @Bean - public UserContext userContext() { - return Mockito.mock(UserContext.class); - } - - @Bean - public UserContextInitializer userContextInitializer() { - return Mockito.mock(UserContextInitializer.class); + public CallContext userContext() { + return Mockito.mock(CallContext.class); } @Bean diff --git a/server/test/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java b/server/test/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java index 36564d96861..9825cab729f 100644 --- a/server/test/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java +++ b/server/test/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java @@ -17,6 +17,25 @@ package org.apache.cloudstack.networkoffering; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.inject.Inject; + +import junit.framework.TestCase; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import org.apache.cloudstack.context.CallContext; + import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.ConfigurationVO; import com.cloud.configuration.dao.ConfigurationDao; @@ -33,22 +52,8 @@ import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.utils.component.ComponentContext; -import junit.framework.TestCase; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import javax.inject.Inject; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:/createNetworkOffering.xml") @@ -73,6 +78,7 @@ public class CreateNetworkOfferingTest extends TestCase{ @Inject VpcManager vpcMgr; + @Override @Before public void setUp() { ComponentContext.initComponentsLifeCycle(); @@ -86,7 +92,13 @@ public class CreateNetworkOfferingTest extends TestCase{ Mockito.when(accountMgr.getSystemUser()).thenReturn(new UserVO(1)); Mockito.when(accountMgr.getSystemAccount()).thenReturn(new AccountVO(2)); - UserContext.registerContext(accountMgr.getSystemUser().getId(), accountMgr.getSystemAccount(), null, false); + CallContext.register(accountMgr.getSystemUser(), accountMgr.getSystemAccount()); + } + + @Override + @After + public void tearDown() { + CallContext.unregister(); } //Test Shared network offerings diff --git a/server/test/org/apache/cloudstack/region/RegionManagerTest.java b/server/test/org/apache/cloudstack/region/RegionManagerTest.java index b6d1969a107..db6bf20cfb7 100644 --- a/server/test/org/apache/cloudstack/region/RegionManagerTest.java +++ b/server/test/org/apache/cloudstack/region/RegionManagerTest.java @@ -22,7 +22,9 @@ import junit.framework.Assert; import junit.framework.TestCase; import org.apache.cloudstack.api.command.admin.domain.DeleteDomainCmd; +import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.region.dao.RegionDao; + import org.apache.log4j.Logger; import org.junit.Before; import org.junit.Test; @@ -30,7 +32,6 @@ import org.mockito.Mockito; import com.cloud.exception.InvalidParameterValueException; import com.cloud.user.Account; -import com.cloud.user.UserContext; import com.cloud.user.dao.AccountDao; diff --git a/server/test/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImplTest.java b/server/test/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImplTest.java index 6d49ec01c8c..2355089de25 100644 --- a/server/test/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImplTest.java +++ b/server/test/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImplTest.java @@ -15,43 +15,72 @@ package org.apache.cloudstack.region.gslb; -import com.cloud.agent.AgentManager; -import com.cloud.configuration.dao.ConfigurationDao; -import com.cloud.exception.InvalidParameterValueException; -import com.cloud.network.dao.*; -import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.RulesManager; -import com.cloud.region.ha.GlobalLoadBalancerRule; -import com.cloud.user.Account; -import com.cloud.user.AccountManager; -import com.cloud.user.AccountVO; -import com.cloud.user.UserContext; -import com.cloud.utils.db.Transaction; -import com.cloud.utils.net.Ip; -import junit.framework.Assert; -import junit.framework.TestCase; -import org.apache.cloudstack.api.command.user.region.ha.gslb.AssignToGlobalLoadBalancerRuleCmd; -import org.apache.cloudstack.api.command.user.region.ha.gslb.CreateGlobalLoadBalancerRuleCmd; -import org.apache.cloudstack.api.command.user.region.ha.gslb.DeleteGlobalLoadBalancerRuleCmd; -import org.apache.cloudstack.api.command.user.region.ha.gslb.RemoveFromGlobalLoadBalancerRuleCmd; -import org.apache.cloudstack.region.RegionVO; -import org.apache.cloudstack.region.dao.RegionDao; -import org.apache.log4j.Logger; -import org.junit.Test; -import org.mockito.Mockito; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Mockito.when; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import static org.mockito.Matchers.*; -import static org.mockito.Mockito.when; +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.log4j.Logger; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +import org.apache.cloudstack.api.command.user.region.ha.gslb.AssignToGlobalLoadBalancerRuleCmd; +import org.apache.cloudstack.api.command.user.region.ha.gslb.CreateGlobalLoadBalancerRuleCmd; +import org.apache.cloudstack.api.command.user.region.ha.gslb.DeleteGlobalLoadBalancerRuleCmd; +import org.apache.cloudstack.api.command.user.region.ha.gslb.RemoveFromGlobalLoadBalancerRuleCmd; +import org.apache.cloudstack.context.CallContext; +import org.apache.cloudstack.region.RegionVO; +import org.apache.cloudstack.region.dao.RegionDao; + +import com.cloud.agent.AgentManager; +import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.exception.InvalidParameterValueException; +import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.dao.IPAddressVO; +import com.cloud.network.dao.LoadBalancerDao; +import com.cloud.network.dao.LoadBalancerVO; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.dao.NetworkVO; +import com.cloud.network.rules.FirewallRule; +import com.cloud.network.rules.RulesManager; +import com.cloud.region.ha.GlobalLoadBalancerRule; +import com.cloud.user.Account; +import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.user.UserVO; +import com.cloud.utils.db.Transaction; +import com.cloud.utils.net.Ip; public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { private static final Logger s_logger = Logger.getLogger( GlobalLoadBalancingRulesServiceImplTest.class); + @Override + @Before + public void setUp() { + Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); + + UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString()); + + CallContext.register(user, account); + } + + @Override + @After + public void tearDown() { + CallContext.unregister(); + } + @Test public void testCreateGlobalLoadBalancerRule() throws Exception { @@ -157,7 +186,7 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); - Account account = (Account) new AccountVO("testaccount", 1, + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); @@ -222,7 +251,7 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); - Account account = (Account) new AccountVO("testaccount", 1, + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); @@ -287,7 +316,7 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); - Account account = (Account) new AccountVO("testaccount", 1, + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); @@ -352,7 +381,7 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); - Account account = (Account) new AccountVO("testaccount", 1, + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); @@ -417,7 +446,7 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); - Account account = (Account) new AccountVO("testaccount", 1, + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); @@ -496,11 +525,9 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); Class _class = assignCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); - Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); gslbRuleId.set(assignCmd, new Long(1)); @@ -561,11 +588,9 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); Class _class = assignCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 3, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 3, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); - Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); gslbRuleId.set(assignCmd, new Long(1)); @@ -648,11 +673,9 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); Class _class = assignCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); - Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); gslbRuleId.set(assignCmd, new Long(1)); @@ -708,9 +731,8 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); Class _class = removeFromGslbCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); @@ -781,9 +803,8 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); Class _class = removeFromGslbCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); @@ -843,9 +864,8 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); Class _class = removeFromGslbCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); @@ -888,11 +908,9 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { DeleteGlobalLoadBalancerRuleCmd deleteCmd = new DeleteGlobalLoadBalancerRuleCmdExtn(); Class _class = deleteCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); - Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); gslbRuleId.set(deleteCmd, new Long(1)); @@ -936,11 +954,9 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { DeleteGlobalLoadBalancerRuleCmd deleteCmd = new DeleteGlobalLoadBalancerRuleCmdExtn(); Class _class = deleteCmd.getClass().getSuperclass(); - Account account = (Account) new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); + Account account = new AccountVO("testaccount", 1, "networkdomain", (short) 0, UUID.randomUUID().toString()); when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); - UserContext.registerContext(1, account, null, true); - Field gslbRuleId = _class.getDeclaredField("id"); gslbRuleId.setAccessible(true); gslbRuleId.set(deleteCmd, new Long(1)); @@ -965,24 +981,28 @@ public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { } public class CreateGlobalLoadBalancerRuleCmdExtn extends CreateGlobalLoadBalancerRuleCmd { + @Override public long getEntityOwnerId() { return 1; } } public class AssignToGlobalLoadBalancerRuleCmdExtn extends AssignToGlobalLoadBalancerRuleCmd { + @Override public long getEntityOwnerId() { return 1; } } public class RemoveFromGlobalLoadBalancerRuleCmdExtn extends RemoveFromGlobalLoadBalancerRuleCmd { + @Override public long getEntityOwnerId() { return 1; } } public class DeleteGlobalLoadBalancerRuleCmdExtn extends DeleteGlobalLoadBalancerRuleCmd { + @Override public long getEntityOwnerId() { return 1; } diff --git a/utils/src/com/cloud/utils/exception/CloudRuntimeException.java b/utils/src/com/cloud/utils/exception/CloudRuntimeException.java index d3b4c197e14..cea3ac23c76 100755 --- a/utils/src/com/cloud/utils/exception/CloudRuntimeException.java +++ b/utils/src/com/cloud/utils/exception/CloudRuntimeException.java @@ -17,16 +17,20 @@ package com.cloud.utils.exception; import java.util.ArrayList; +import java.util.List; +import com.cloud.utils.Pair; import com.cloud.utils.SerialVersionUID; /** * wrap exceptions that you know there's no point in dealing with. */ -public class CloudRuntimeException extends RuntimeException { +public class CloudRuntimeException extends RuntimeException implements ErrorContext { private static final long serialVersionUID = SerialVersionUID.CloudRuntimeException; + protected ArrayList, String>> uuidList = new ArrayList, String>>(); + // This holds a list of uuids and their descriptive names. protected ArrayList idList = new ArrayList(); @@ -66,14 +70,25 @@ public class CloudRuntimeException extends RuntimeException { } public void setCSErrorCode(int cserrcode) { - this.csErrorCode = cserrcode; + csErrorCode = cserrcode; } public int getCSErrorCode() { - return this.csErrorCode; + return csErrorCode; } public CloudRuntimeException(Throwable t) { super(t); } + + @Override + public CloudRuntimeException add(Class entity, String uuid) { + uuidList.add(new Pair, String>(entity, uuid)); + return this; + } + + @Override + public List, String>> getEntitiesInError() { + return uuidList; + } }