You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2014/02/07 22:46:59 UTC
[50/50] [abbrv] git commit: updated refs/heads/rbac to 3b58a45
Merge branch 'master' into rbac.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3b58a45e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3b58a45e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3b58a45e
Branch: refs/heads/rbac
Commit: 3b58a45e049c3341c7b54f9d09bff5f7088c9425
Parents: c440d90 3384633
Author: Min Chen <mi...@citrix.com>
Authored: Fri Feb 7 13:43:36 2014 -0800
Committer: Min Chen <mi...@citrix.com>
Committed: Fri Feb 7 13:43:36 2014 -0800
----------------------------------------------------------------------
api/src/com/cloud/event/EventTypes.java | 6 +
.../com/cloud/network/MonitoringService.java | 2 +-
api/src/com/cloud/network/NetworkService.java | 4 +-
.../cloud/network/firewall/FirewallService.java | 2 +
.../com/cloud/network/rules/RulesService.java | 2 +
.../cloud/network/vpc/NetworkACLService.java | 5 +-
api/src/com/cloud/network/vpc/VpcService.java | 3 +-
.../network/vpn/RemoteAccessVpnService.java | 5 +
.../cloud/network/vpn/Site2SiteVpnService.java | 4 +
api/src/com/cloud/storage/Storage.java | 5 +-
.../cloudstack/api/BaseAsyncCustomIdCmd.java | 7 +-
api/src/org/apache/cloudstack/api/BaseCmd.java | 6 +-
.../apache/cloudstack/api/BaseCustomIdCmd.java | 7 +-
.../admin/network/UpdateNetworkCmdByAdmin.java | 2 +-
.../command/admin/vpc/UpdateVPCCmdByAdmin.java | 2 +-
.../command/user/address/UpdateIPAddrCmd.java | 124 +
.../autoscale/UpdateAutoScaleVmGroupCmd.java | 13 +-
.../autoscale/UpdateAutoScaleVmProfileCmd.java | 13 +-
.../firewall/UpdateEgressFirewallRuleCmd.java | 113 +
.../user/firewall/UpdateFirewallRuleCmd.java | 114 +
.../firewall/UpdatePortForwardingRuleCmd.java | 29 +-
.../UpdateApplicationLoadBalancerCmd.java | 96 +
.../loadbalancer/UpdateLoadBalancerRuleCmd.java | 14 +-
.../user/network/UpdateNetworkACLItemCmd.java | 16 +-
.../user/network/UpdateNetworkACLListCmd.java | 91 +
.../command/user/network/UpdateNetworkCmd.java | 14 +-
.../api/command/user/vm/UpdateVMCmd.java | 8 +
.../command/user/volume/UpdateVolumeCmd.java | 9 +
.../api/command/user/vpc/UpdateVPCCmd.java | 14 +-
.../user/vpn/UpdateRemoteAccessVpnCmd.java | 102 +
.../user/vpn/UpdateVpnConnectionCmd.java | 90 +
.../command/user/vpn/UpdateVpnGatewayCmd.java | 89 +
.../Site2SiteVpnConnectionResponse.java | 5 +-
.../lb/ApplicationLoadBalancerService.java | 2 +
client/pom.xml | 25 +-
client/tomcatconf/commands.properties.in | 9 +
.../api/storage/StorageCacheManager.java | 2 +
.../cloud/network/vpc/NetworkACLManager.java | 3 +-
.../com/cloud/agent/manager/AgentAttache.java | 2 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 2 +-
.../orchestration/NetworkOrchestrator.java | 19 +-
.../cloud/network/as/AutoScaleVmGroupVO.java | 4 +
.../cloud/network/as/AutoScaleVmProfileVO.java | 9 +-
.../network/dao/MonitoringServiceDaoImpl.java | 4 +-
.../cloud/network/dao/MonitoringServiceVO.java | 22 +-
.../cloud/network/dao/RemoteAccessVpnVO.java | 4 +
.../network/dao/Site2SiteVpnConnectionVO.java | 4 +
.../network/dao/Site2SiteVpnGatewayVO.java | 4 +
.../com/cloud/network/vpc/NetworkACLItemVO.java | 4 +
.../src/com/cloud/network/vpc/NetworkACLVO.java | 3 +
.../schema/src/com/cloud/network/vpc/VpcVO.java | 13 +-
.../resourcedetail/ResourceDetailsDaoBase.java | 5 +-
.../storage/datastore/db/ImageStoreVO.java | 10 +-
.../storage/datastore/db/StoragePoolVO.java | 15 +-
.../cache/allocator/StorageCacheAllocator.java | 3 +
.../allocator/StorageCacheRandomAllocator.java | 38 +
.../cache/manager/StorageCacheManagerImpl.java | 13 +
.../motion/AncientDataMotionStrategy.java | 4 +-
.../storage/test/ChildTestConfiguration.java | 6 -
.../storage/snapshot/SnapshotObject.java | 3 +
.../storage/snapshot/SnapshotServiceImpl.java | 8 +-
.../snapshot/XenserverSnapshotStrategy.java | 5 +
.../endpoint/DefaultEndPointSelector.java | 3 +-
.../storage/image/format/ImageFormatHelper.java | 2 +-
.../datastore/PrimaryDataStoreHelper.java | 2 +-
.../storage/datastore/PrimaryDataStoreImpl.java | 5 +-
.../HypervResource/CloudStackTypes.cs | 8 +-
.../HypervResource/HypervResourceController.cs | 8 +-
.../ServerResource/HypervResource/WmiCallsV2.cs | 8 +-
.../kvm/resource/LibvirtComputingResource.java | 56 +-
.../kvm/resource/LibvirtDomainXMLParser.java | 4 +-
.../hypervisor/kvm/resource/LibvirtVMDef.java | 16 +
.../kvm/storage/KVMStorageProcessor.java | 2 +
.../kvm/storage/LibvirtStorageAdaptor.java | 6 +
.../resource/LibvirtDomainXMLParserTest.java | 194 ++
.../com/cloud/hypervisor/guru/VMwareGuru.java | 36 +-
.../vmware/manager/VmwareManagerImpl.java | 94 +-
.../resource/VmwareStorageProcessor.java | 6 +
.../VmwareStorageSubsystemCommandHandler.java | 51 +-
.../vmware/VmwareDatacenterApiUnitTest.java | 6 -
.../xen/resource/CitrixResourceBase.java | 7 +-
.../contrail/management/ContrailGuru.java | 42 +-
.../management/ContrailManagerImpl.java | 6 +-
.../IntegrationTestConfiguration.java | 6 -
plugins/network-elements/netscaler/pom.xml | 8 +-
.../network/resource/NetscalerResource.java | 149 +-
.../cloudstack/network/element/SspClient.java | 110 +-
.../network/element/SspClientTest.java | 20 +-
plugins/pom.xml | 12 +-
...CloudStackPrimaryDataStoreLifeCycleImpl.java | 8 +-
pom.xml | 6 +-
.../spring-server-core-managers-context.xml | 6 -
server/src/com/cloud/api/ApiDispatcher.java | 12 +-
.../com/cloud/api/query/vo/UserVmJoinVO.java | 23 +-
.../configuration/ConfigurationManagerImpl.java | 41 +-
.../com/cloud/consoleproxy/AgentHookBase.java | 5 +-
.../ConsoleProxyBalanceAllocator.java | 3 -
.../consoleproxy/StaticConsoleProxyManager.java | 18 -
.../src/com/cloud/dc/DedicatedResourceVO.java | 10 +-
.../com/cloud/network/IpAddressManagerImpl.java | 36 +-
.../src/com/cloud/network/NetworkModelImpl.java | 7 +-
.../com/cloud/network/NetworkServiceImpl.java | 29 +-
.../cloud/network/as/AutoScaleManagerImpl.java | 20 +-
.../network/firewall/FirewallManagerImpl.java | 31 +-
.../cloud/network/guru/ControlNetworkGuru.java | 4 +-
.../lb/LoadBalancingRulesManagerImpl.java | 15 +-
.../VirtualNetworkApplianceManagerImpl.java | 1587 ++++++------
.../cloud/network/rules/RulesManagerImpl.java | 20 +-
.../network/vpc/NetworkACLManagerImpl.java | 9 +-
.../network/vpc/NetworkACLServiceImpl.java | 22 +-
.../com/cloud/network/vpc/VpcManagerImpl.java | 15 +-
.../network/vpn/RemoteAccessVpnManagerImpl.java | 26 +-
.../network/vpn/Site2SiteVpnManagerImpl.java | 42 +-
.../com/cloud/resource/ResourceManagerImpl.java | 66 +-
.../PremiumSecondaryStorageManagerImpl.java | 185 --
.../cloud/server/ConfigurationServerImpl.java | 413 +--
.../com/cloud/server/ManagementServerImpl.java | 51 +-
.../com/cloud/storage/VolumeApiServiceImpl.java | 188 +-
.../storage/download/DownloadMonitorImpl.java | 29 +-
.../secondary/SecondaryStorageListener.java | 5 +-
.../secondary/SecondaryStorageManagerImpl.java | 1389 ----------
.../storage/snapshot/SnapshotManagerImpl.java | 66 +-
.../cloud/storage/upload/UploadMonitorImpl.java | 27 +-
.../com/cloud/template/TemplateManagerImpl.java | 135 +-
.../src/com/cloud/uuididentity/UUIDManager.java | 37 -
.../com/cloud/uuididentity/UUIDManagerImpl.java | 1 +
server/src/com/cloud/vm/UserVmManagerImpl.java | 15 +-
.../lb/ApplicationLoadBalancerManagerImpl.java | 23 +-
.../cloudstack/network/lb/CertServiceImpl.java | 14 +-
.../cloud/network/MockFirewallManagerImpl.java | 6 +
.../com/cloud/vpc/MockNetworkManagerImpl.java | 13 +-
.../cloud/vpc/MockSite2SiteVpnManagerImpl.java | 15 +-
.../com/cloud/vpc/NetworkACLManagerTest.java | 9 +-
.../networkoffering/ChildTestConfiguration.java | 6 -
.../consoleproxy/ConsoleProxyRdpClient.java | 147 +-
.../ConsoleProxyThumbnailHandler.java | 1 +
services/secondary-storage/controller/pom.xml | 50 +
...econdary-storage-controller-core-context.xml | 33 +
.../PremiumSecondaryStorageManagerImpl.java | 186 ++
.../SecondaryStorageManagerImpl.java | 1388 ++++++++++
services/secondary-storage/pom.xml | 85 +-
.../module.properties | 18 -
...ing-secondary-storage-discoverer-context.xml | 36 -
services/secondary-storage/server/pom.xml | 105 +
.../module.properties | 18 +
...ing-secondary-storage-discoverer-context.xml | 36 +
.../LocalNfsSecondaryStorageResource.java | 95 +
.../resource/LocalSecondaryStorageResource.java | 240 ++
.../resource/NfsSecondaryStorageResource.java | 2430 ++++++++++++++++++
.../resource/SecondaryStorageDiscoverer.java | 312 +++
.../resource/SecondaryStorageResource.java | 29 +
.../SecondaryStorageResourceHandler.java | 24 +
.../storage/template/DownloadManager.java | 108 +
.../storage/template/DownloadManagerImpl.java | 1080 ++++++++
.../storage/template/UploadManager.java | 82 +
.../storage/template/UploadManagerImpl.java | 550 ++++
.../LocalNfsSecondaryStorageResourceTest.java | 143 ++
.../NfsSecondaryStorageResourceTest.java | 110 +
.../LocalNfsSecondaryStorageResource.java | 95 -
.../resource/LocalSecondaryStorageResource.java | 240 --
.../resource/NfsSecondaryStorageResource.java | 2430 ------------------
.../resource/SecondaryStorageDiscoverer.java | 312 ---
.../resource/SecondaryStorageResource.java | 29 -
.../SecondaryStorageResourceHandler.java | 24 -
.../storage/template/DownloadManager.java | 108 -
.../storage/template/DownloadManagerImpl.java | 1080 --------
.../storage/template/UploadManager.java | 82 -
.../storage/template/UploadManagerImpl.java | 550 ----
.../LocalNfsSecondaryStorageResourceTest.java | 143 --
.../NfsSecondaryStorageResourceTest.java | 110 -
setup/db/create-schema.sql | 2 +-
.../patches/debian/config/etc/dnsmasq.conf.tmpl | 2 +-
.../patches/debian/config/etc/vpcdnsmasq.conf | 2 +-
.../definitions/systemvm64template/base.sh | 6 +-
.../systemvm64template/definition.rb | 6 +-
.../systemvm64template/postinstall.sh | 14 +-
.../definitions/systemvmtemplate/base.sh | 4 +-
.../definitions/systemvmtemplate/definition.rb | 6 +-
.../definitions/systemvmtemplate/postinstall.sh | 10 +-
ui/scripts/configuration.js | 12 +-
ui/scripts/instances.js | 2 +-
ui/scripts/system.js | 33 +-
ui/scripts/ui/widgets/detailView.js | 3 +-
utils/src/com/cloud/utils/UriUtils.java | 60 +
utils/src/com/cloud/utils/db/UUIDManager.java | 37 +
utils/src/com/cloud/utils/net/Ip.java | 2 +-
utils/test/com/cloud/utils/net/IpTest.java | 43 +
187 files changed, 10508 insertions(+), 9061 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/com/cloud/event/EventTypes.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/BaseCmd.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/admin/network/UpdateNetworkCmdByAdmin.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/admin/network/UpdateNetworkCmdByAdmin.java
index cab88d4,0000000..644a0fa
mode 100644,000000..100644
--- a/api/src/org/apache/cloudstack/api/command/admin/network/UpdateNetworkCmdByAdmin.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/network/UpdateNetworkCmdByAdmin.java
@@@ -1,63 -1,0 +1,63 @@@
+// 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.api.command.admin.network;
+
+import org.apache.log4j.Logger;
+
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.ResponseObject.ResponseView;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.command.user.network.UpdateNetworkCmd;
+import org.apache.cloudstack.api.response.NetworkResponse;
+import org.apache.cloudstack.context.CallContext;
+
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.network.Network;
+import com.cloud.user.Account;
+import com.cloud.user.User;
+
+@APICommand(name = "updateNetwork", description = "Updates a network", responseObject = NetworkResponse.class, responseView = ResponseView.Full)
+public class UpdateNetworkCmdByAdmin extends UpdateNetworkCmd {
+ public static final Logger s_logger = Logger.getLogger(UpdateNetworkCmdByAdmin.class.getName());
+
+
+ @Override
+ public void execute() throws InsufficientCapacityException, ConcurrentOperationException{
+ User callerUser = _accountService.getActiveUser(CallContext.current().getCallingUserId());
+ Account callerAccount = _accountService.getActiveAccountById(callerUser.getAccountId());
+ Network network = _networkService.getNetwork(id);
+ if (network == null) {
+ throw new InvalidParameterValueException("Couldn't find network by id");
+ }
+
+ Network result = _networkService.updateGuestNetwork(getId(), getNetworkName(), getDisplayText(), callerAccount,
- callerUser, getNetworkDomain(), getNetworkOfferingId(), getChangeCidr(), getGuestVmCidr(), getDisplayNetwork());
++ callerUser, getNetworkDomain(), getNetworkOfferingId(), getChangeCidr(), getGuestVmCidr(), getDisplayNetwork(), getCustomId());
+
+
+ if (result != null) {
+ NetworkResponse response = _responseGenerator.createNetworkResponse(ResponseView.Full, result);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update network");
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCCmdByAdmin.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCCmdByAdmin.java
index a0e8021,0000000..372bb75
mode 100644,000000..100644
--- a/api/src/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCCmdByAdmin.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/vpc/UpdateVPCCmdByAdmin.java
@@@ -1,47 -1,0 +1,47 @@@
+// 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.api.command.admin.vpc;
+
+import org.apache.log4j.Logger;
+
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.ResponseObject.ResponseView;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.command.user.vpc.UpdateVPCCmd;
+import org.apache.cloudstack.api.response.VpcResponse;
+
+import com.cloud.network.vpc.Vpc;
+
+@APICommand(name = "updateVPC", description = "Updates a VPC", responseObject = VpcResponse.class, responseView = ResponseView.Full)
+public class UpdateVPCCmdByAdmin extends UpdateVPCCmd {
+ public static final Logger s_logger = Logger.getLogger(UpdateVPCCmdByAdmin.class.getName());
+
+ @Override
+ public void execute(){
- Vpc result = _vpcService.updateVpc(getId(), getVpcName(), getDisplayText());
++ Vpc result = _vpcService.updateVpc(getId(), getVpcName(), getDisplayText(), getCustomId());
+ if (result != null) {
+ VpcResponse response = _responseGenerator.createVpcResponse(ResponseView.Full, result);
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update VPC");
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/address/UpdateIPAddrCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/address/UpdateIPAddrCmd.java
index 0000000,b45bf94..ea55dc4
mode 000000,100644..100644
--- a/api/src/org/apache/cloudstack/api/command/user/address/UpdateIPAddrCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/address/UpdateIPAddrCmd.java
@@@ -1,0 -1,122 +1,124 @@@
+ // 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.api.command.user.address;
+
++import org.apache.log4j.Logger;
++
+ import org.apache.cloudstack.api.APICommand;
+ import org.apache.cloudstack.api.ApiConstants;
+ import org.apache.cloudstack.api.BaseAsyncCustomIdCmd;
+ import org.apache.cloudstack.api.Parameter;
++import org.apache.cloudstack.api.ResponseObject.ResponseView;
+ import org.apache.cloudstack.api.ServerApiException;
+ import org.apache.cloudstack.api.response.AccountResponse;
+ import org.apache.cloudstack.api.response.IPAddressResponse;
-import org.apache.log4j.Logger;
+
+ import com.cloud.event.EventTypes;
+ import com.cloud.exception.ConcurrentOperationException;
+ import com.cloud.exception.InsufficientCapacityException;
+ import com.cloud.exception.InvalidParameterValueException;
+ import com.cloud.exception.NetworkRuleConflictException;
+ import com.cloud.exception.ResourceAllocationException;
+ import com.cloud.exception.ResourceUnavailableException;
+ import com.cloud.network.IpAddress;
+ import com.cloud.user.Account;
+
+ @APICommand(name = "updatePublicIpAddress", description = "Updates an ip address", responseObject = IPAddressResponse.class)
+ public class UpdateIPAddrCmd extends BaseAsyncCustomIdCmd {
+ public static final Logger s_logger = Logger.getLogger(UpdateIPAddrCmd.class.getName());
+ private static final String s_name = "updateipaddressresponse";
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = IPAddressResponse.class, required = true, description = "the id of the public ip address"
+ + " to update")
+ private Long id;
+ // unexposed parameter needed for events logging
+ @Parameter(name = ApiConstants.ACCOUNT_ID, type = CommandType.UUID, entityType = AccountResponse.class, expose = false)
+ private Long ownerId;
+
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+ @Override
+ public String getCommandName() {
+ return s_name;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+
+ /////////////////////////////////////////////////////
+ /////////////// API Implementation///////////////////
+ /////////////////////////////////////////////////////
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_NET_IP_UPDATE;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return ("Updating ip address with id=" + id);
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ if (ownerId == null) {
+ IpAddress ip = getIpAddress(id);
+ if (ip == null) {
+ throw new InvalidParameterValueException("Unable to find ip address by id=" + id);
+ }
+ ownerId = ip.getAccountId();
+ }
+
+ if (ownerId == null) {
+ return Account.ACCOUNT_ID_SYSTEM;
+ }
+ return ownerId;
+ }
+
+ private IpAddress getIpAddress(long id) {
+ IpAddress ip = _entityMgr.findById(IpAddress.class, id);
+
+ if (ip == null) {
+ throw new InvalidParameterValueException("Unable to find ip address by id=" + id);
+ } else {
+ return ip;
+ }
+ }
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), IpAddress.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), IpAddress.class);
+ }
+ }
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException,
+ NetworkRuleConflictException {
+
- IpAddress result = _networkService.updateIP(getId(), this.getCustomId());
- IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(result);
++ IpAddress result = _networkService.updateIP(getId(), getCustomId());
++ IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(ResponseView.Restricted, result);
+ ipResponse.setResponseName(getCommandName());
+ setResponseObject(ipResponse);
+ }
+ }
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java
index 0aba633,628bb8a..7c205f3
--- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java
@@@ -39,8 -35,8 +39,8 @@@ import com.cloud.event.EventTypes
import com.cloud.network.as.AutoScaleVmGroup;
import com.cloud.user.Account;
-@APICommand(name = "updateAutoScaleVmGroup", description = "Updates an existing autoscale vm group.", responseObject = AutoScaleVmGroupResponse.class)
+@APICommand(name = "updateAutoScaleVmGroup", description = "Updates an existing autoscale vm group.", responseObject = AutoScaleVmGroupResponse.class, entityType = { AclEntityType.AutoScaleVmGroup })
- public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCmd {
+ public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCustomIdCmd {
public static final Logger s_logger = Logger.getLogger(UpdateAutoScaleVmGroupCmd.class.getName());
private static final String s_name = "updateautoscalevmgroupresponse";
@@@ -95,7 -90,7 +95,7 @@@
if (result != null) {
AutoScaleVmGroupResponse response = _responseGenerator.createAutoScaleVmGroupResponse(result);
response.setResponseName(getCommandName());
-- this.setResponseObject(response);
++ setResponseObject(response);
} else {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update autoscale VmGroup");
}
@@@ -158,4 -153,11 +158,11 @@@
public ApiCommandJobType getInstanceType() {
return ApiCommandJobType.AutoScaleVmGroup;
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmGroup.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), AutoScaleVmGroup.class);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java
index 2d76c51,d6405c1..959b829
--- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java
@@@ -40,8 -36,8 +40,8 @@@ import com.cloud.event.EventTypes
import com.cloud.network.as.AutoScaleVmProfile;
import com.cloud.user.Account;
-@APICommand(name = "updateAutoScaleVmProfile", description = "Updates an existing autoscale vm profile.", responseObject = AutoScaleVmProfileResponse.class)
+@APICommand(name = "updateAutoScaleVmProfile", description = "Updates an existing autoscale vm profile.", responseObject = AutoScaleVmProfileResponse.class, entityType = { AclEntityType.AutoScaleVmProfile })
- public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCmd {
+ public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCustomIdCmd {
public static final Logger s_logger = Logger.getLogger(UpdateAutoScaleVmProfileCmd.class.getName());
private static final String s_name = "updateautoscalevmprofileresponse";
@@@ -91,7 -86,7 +91,7 @@@
if (result != null) {
AutoScaleVmProfileResponse response = _responseGenerator.createAutoScaleVmProfileResponse(result);
response.setResponseName(getCommandName());
-- this.setResponseObject(response);
++ setResponseObject(response);
} else {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update autoscale vm profile");
}
@@@ -150,4 -145,11 +150,11 @@@
public ApiCommandJobType getInstanceType() {
return ApiCommandJobType.AutoScaleVmProfile;
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmProfile.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), AutoScaleVmProfile.class);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/firewall/UpdatePortForwardingRuleCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/firewall/UpdatePortForwardingRuleCmd.java
index 6c860fe,a7bb7e3..79d3ce6
--- a/api/src/org/apache/cloudstack/api/command/user/firewall/UpdatePortForwardingRuleCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/firewall/UpdatePortForwardingRuleCmd.java
@@@ -34,8 -35,8 +37,8 @@@ import com.cloud.user.Account
@APICommand(name = "updatePortForwardingRule",
responseObject = FirewallRuleResponse.class,
- description = "Updates a port forwarding rule. Only the private port and the virtual machine can be updated.", entityType = { AclEntityType.PortForwardingRule })
- public class UpdatePortForwardingRuleCmd extends BaseAsyncCmd {
- description = "Updates a port forwarding rule")
++ description = "Updates a port forwarding rule. Only the private port and the virtual machine can be updated.", entityType = {AclEntityType.PortForwardingRule})
+ public class UpdatePortForwardingRuleCmd extends BaseAsyncCustomIdCmd {
public static final Logger s_logger = Logger.getLogger(UpdatePortForwardingRuleCmd.class.getName());
private static final String s_name = "updateportforwardingruleresponse";
@@@ -130,7 -131,21 +133,21 @@@
}
@Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), FirewallRule.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), FirewallRule.class);
+ }
+ }
+
+ @Override
public void execute() {
- PortForwardingRule rule = _rulesService.updatePortForwardingRule(id, this.getCustomId());
++ PortForwardingRule rule = _rulesService.updatePortForwardingRule(id, getCustomId());
+ FirewallRuleResponse fwResponse = new FirewallRuleResponse();
+ if (rule != null) {
+ fwResponse = _responseGenerator.createPortForwardingRuleResponse(rule);
+ setResponseObject(fwResponse);
+ }
+ fwResponse.setResponseName(getCommandName());
//FIXME: PortForwardingRule result = _mgr.updatePortForwardingRule(this);
// if (result != null) {
// FirewallRuleResponse response = _responseGenerator.createFirewallRuleResponse(result);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java
index 139f81a,85bea5f..215a1da
--- a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java
@@@ -25,8 -20,8 +25,9 @@@ import org.apache.cloudstack.api.APICom
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseAsyncCmd;
+ import org.apache.cloudstack.api.BaseAsyncCustomIdCmd;
import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ResponseObject.ResponseView;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.NetworkOfferingResponse;
import org.apache.cloudstack.api.response.NetworkResponse;
@@@ -41,8 -37,8 +42,8 @@@ import com.cloud.offering.NetworkOfferi
import com.cloud.user.Account;
import com.cloud.user.User;
-@APICommand(name = "updateNetwork", description = "Updates a network", responseObject = NetworkResponse.class)
+@APICommand(name = "updateNetwork", description = "Updates a network", responseObject = NetworkResponse.class, responseView = ResponseView.Restricted, entityType = { AclEntityType.Network })
- public class UpdateNetworkCmd extends BaseAsyncCmd {
+ public class UpdateNetworkCmd extends BaseAsyncCustomIdCmd {
public static final Logger s_logger = Logger.getLogger(UpdateNetworkCmd.class.getName());
private static final String s_name = "updatenetworkresponse";
@@@ -147,12 -141,12 +148,12 @@@
Network result =
_networkService.updateGuestNetwork(getId(), getNetworkName(), getDisplayText(), callerAccount, callerUser, getNetworkDomain(), getNetworkOfferingId(),
- getChangeCidr(), getGuestVmCidr(), getDisplayNetwork());
- getChangeCidr(), getGuestVmCidr(), getDisplayNetwork(), this.getCustomId());
++ getChangeCidr(), getGuestVmCidr(), getDisplayNetwork(), getCustomId());
if (result != null) {
- NetworkResponse response = _responseGenerator.createNetworkResponse(ResponseView.Full, result);
- NetworkResponse response = _responseGenerator.createNetworkResponse(result);
++ NetworkResponse response = _responseGenerator.createNetworkResponse(ResponseView.Restricted, result);
response.setResponseName(getCommandName());
- this.setResponseObject(response);
+ setResponseObject(response);
} else {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update network");
}
@@@ -194,4 -188,11 +195,11 @@@
public Long getSyncObjId() {
return id;
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), Network.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), Network.class);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java
index 4b541f4,0639477..28d7c0ea
--- a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java
@@@ -154,4 -146,12 +154,12 @@@ public class UpdateVMCmd extends BaseCu
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update vm");
}
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), UserVm.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), UserVm.class);
+
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java
index f63a53c,65d2849..3fa24cf
--- a/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java
@@@ -15,11 -15,7 +15,12 @@@
// specific language governing permissions and limitations
// under the License.
package org.apache.cloudstack.api.command.user.volume;
+
+import org.apache.log4j.Logger;
+
+import org.apache.cloudstack.acl.AclEntityType;
+import org.apache.cloudstack.acl.SecurityChecker.AccessType;
+import org.apache.cloudstack.api.ACL;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiCommandJobType;
import org.apache.cloudstack.api.ApiConstants;
@@@ -153,4 -148,12 +154,12 @@@ public class UpdateVolumeCmd extends Ba
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update volume");
}
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), Volume.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), Volume.class);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java
index ed63225,3f24a2f..16829a2
--- a/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java
@@@ -25,17 -20,18 +25,18 @@@ import org.apache.cloudstack.api.APICom
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseAsyncCmd;
+ import org.apache.cloudstack.api.BaseAsyncCustomIdCmd;
import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ResponseObject.ResponseView;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.VpcResponse;
-import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.network.vpc.Vpc;
import com.cloud.user.Account;
-@APICommand(name = "updateVPC", description = "Updates a VPC", responseObject = VpcResponse.class)
+@APICommand(name = "updateVPC", description = "Updates a VPC", responseObject = VpcResponse.class, responseView = ResponseView.Restricted, entityType = { AclEntityType.Vpc })
- public class UpdateVPCCmd extends BaseAsyncCmd{
+ public class UpdateVPCCmd extends BaseAsyncCustomIdCmd {
public static final Logger s_logger = Logger.getLogger(UpdateVPCCmd.class.getName());
private static final String Name = "updatevpcresponse";
@@@ -88,11 -84,11 +89,11 @@@
@Override
public void execute() {
- Vpc result = _vpcService.updateVpc(getId(), getVpcName(), getDisplayText());
- Vpc result = _vpcService.updateVpc(getId(), getVpcName(), getDisplayText(), this.getCustomId());
++ Vpc result = _vpcService.updateVpc(getId(), getVpcName(), getDisplayText(), getCustomId());
if (result != null) {
- VpcResponse response = _responseGenerator.createVpcResponse(result);
+ VpcResponse response = _responseGenerator.createVpcResponse(ResponseView.Restricted, result);
response.setResponseName(getCommandName());
- this.setResponseObject(response);
+ setResponseObject(response);
} else {
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update VPC");
}
@@@ -117,4 -113,11 +118,11 @@@
public Long getSyncObjId() {
return getId();
}
+
+ @Override
+ public void checkUuid() {
- if (this.getCustomId() != null) {
- _uuidMgr.checkUuid(this.getCustomId(), Vpc.class);
++ if (getCustomId() != null) {
++ _uuidMgr.checkUuid(getCustomId(), Vpc.class);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/client/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
----------------------------------------------------------------------
diff --cc engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index 8684876,ce40762..1227210
--- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@@ -2447,8 -2430,12 +2448,12 @@@ public class NetworkOrchestrator extend
return null;
}
+ NetworkElement element = _networkModel.getElementImplementingProvider(DhcpProvider);
+ if ( element instanceof DhcpServiceProvider ) {
- return (DhcpServiceProvider)_networkModel.getElementImplementingProvider(DhcpProvider);
+ return (DhcpServiceProvider)_networkModel.getElementImplementingProvider(DhcpProvider);
-
+ } else {
+ return null;
+ }
}
protected boolean isSharedNetworkWithServices(Network network) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java
index 27d00af,9650249..1c12ce6
--- a/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java
+++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java
@@@ -210,8 -209,7 +210,12 @@@ public class AutoScaleVmGroupVO impleme
return uuid;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.AutoScaleVmGroup;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java
index e5db2c9,9a8fbd8..e718a2b
--- a/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java
+++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java
@@@ -92,7 -91,7 +92,7 @@@ public class AutoScaleVmProfileVO imple
public AutoScaleVmProfileVO(long zoneId, long domainId, long accountId, long serviceOfferingId, long templateId, String otherDeployParams, Map counterParamList,
Integer destroyVmGraceperiod, long autoscaleUserId) {
-- this.uuid = UUID.randomUUID().toString();
++ uuid = UUID.randomUUID().toString();
this.zoneId = zoneId;
this.domainId = domainId;
this.accountId = accountId;
@@@ -147,7 -146,7 +147,7 @@@
}
public void setCounterParams(String counterParam) {
-- this.counterParams = counterParam;
++ counterParams = counterParam;
}
public void setCounterParamsForUpdate(Map counterParamList) {
@@@ -218,8 -217,7 +218,13 @@@
return autoscaleUserId;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.AutoScaleVmProfile;
+ }
++
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/dao/MonitoringServiceVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/dao/MonitoringServiceVO.java
index d7cb864,f9967ec..21e4f03
--- a/engine/schema/src/com/cloud/network/dao/MonitoringServiceVO.java
+++ b/engine/schema/src/com/cloud/network/dao/MonitoringServiceVO.java
@@@ -117,13 -113,7 +115,13 @@@ public class MonitoringServiceVO implem
return defaultService;
}
- public String getProcessname() {
- return processname;
+ public String getProcessName() {
+ return processName;
}
+
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.MonitorService;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/dao/RemoteAccessVpnVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/dao/RemoteAccessVpnVO.java
index 678ea4a,c892949..f546bb7
--- a/engine/schema/src/com/cloud/network/dao/RemoteAccessVpnVO.java
+++ b/engine/schema/src/com/cloud/network/dao/RemoteAccessVpnVO.java
@@@ -151,8 -149,7 +151,12 @@@ public class RemoteAccessVpnVO implemen
return vpcId;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.RemoteAccessVpn;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/dao/Site2SiteVpnConnectionVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/dao/Site2SiteVpnConnectionVO.java
index e3e0433,7f1d0aa..b092a4a
--- a/engine/schema/src/com/cloud/network/dao/Site2SiteVpnConnectionVO.java
+++ b/engine/schema/src/com/cloud/network/dao/Site2SiteVpnConnectionVO.java
@@@ -158,8 -156,7 +158,12 @@@ public class Site2SiteVpnConnectionVO i
this.passive = passive;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.Site2SiteVpnConnection;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/dao/Site2SiteVpnGatewayVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/dao/Site2SiteVpnGatewayVO.java
index 626572e,5e8c6b6..c3ad360
--- a/engine/schema/src/com/cloud/network/dao/Site2SiteVpnGatewayVO.java
+++ b/engine/schema/src/com/cloud/network/dao/Site2SiteVpnGatewayVO.java
@@@ -116,8 -113,7 +116,12 @@@ public class Site2SiteVpnGatewayVO impl
return accountId;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.Site2SiteVpnGateway;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/schema/src/com/cloud/network/vpc/VpcVO.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/network/vpc/VpcVO.java
index 910a8c4,5f3528d..dc4f80e
--- a/engine/schema/src/com/cloud/network/vpc/VpcVO.java
+++ b/engine/schema/src/com/cloud/network/vpc/VpcVO.java
@@@ -78,7 -77,7 +79,7 @@@ public class VpcVO implements Vpc
boolean restartRequired = false;
public VpcVO() {
-- this.uuid = UUID.randomUUID().toString();
++ uuid = UUID.randomUUID().toString();
}
public VpcVO(long zoneId, String name, String displayText, long accountId, long domainId, long vpcOffId, String cidr, String networkDomain) {
@@@ -88,10 -87,10 +89,10 @@@
this.accountId = accountId;
this.domainId = domainId;
this.cidr = cidr;
-- this.uuid = UUID.randomUUID().toString();
-- this.state = State.Enabled;
++ uuid = UUID.randomUUID().toString();
++ state = State.Enabled;
this.networkDomain = networkDomain;
-- this.vpcOfferingId = vpcOffId;
++ vpcOfferingId = vpcOffId;
}
@Override
@@@ -180,8 -179,7 +181,12 @@@
return restartRequired;
}
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
++
+ @Override
+ public AclEntityType getEntityType() {
+ return AclEntityType.Vpc;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
----------------------------------------------------------------------
diff --cc engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
index 87bb44d,669a075..b5573dd
--- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
+++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java
@@@ -287,7 -286,10 +287,10 @@@ public class SnapshotObject implements
} else if (answer instanceof CopyCmdAnswer) {
SnapshotObjectTO snapshotTO = (SnapshotObjectTO)((CopyCmdAnswer)answer).getNewData();
snapshotStore.setInstallPath(snapshotTO.getPath());
+ if (snapshotTO.getPhysicalSize() != null) {
+ // For S3 delta snapshot, physical size is currently not set
- snapshotStore.setSize(snapshotTO.getPhysicalSize());
+ snapshotStore.setSize(snapshotTO.getPhysicalSize());
+ }
if (snapshotTO.getParentSnapshotPath() == null) {
snapshotStore.setParentSnapshotId(0L);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/api/ApiDispatcher.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/api/query/vo/UserVmJoinVO.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 5f02004,49fee93..bf45d8f
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@@ -2877,29 -2875,44 +2877,44 @@@ public class ConfigurationManagerImpl e
continue;
}
// from here, subnet overlaps
- if (!NetUtils.isSameIsolationId(vlanId, vlan.getVlanTag())) {
- throw new InvalidParameterValueException("The IP range with tag: " + vlan.getVlanTag() + " in zone " + zone.getName()
- + " has overlapped with the subnet. Please specify a different gateway/netmask.");
+ if ( !vlanId.equals(vlan.getVlanTag()) ) {
+ boolean overlapped = false;
+ if( network.getTrafficType() == TrafficType.Public ) {
+ overlapped = true;
+ } else {
+ Long nwId = vlan.getNetworkId();
+ if ( nwId != null ) {
+ Network nw = _networkModel.getNetwork(nwId);
+ if ( nw != null && nw.getTrafficType() == TrafficType.Public ) {
+ overlapped = true;
+ }
- }
+ }
- if (vlan.getNetworkId() != networkId) {
- throw new InvalidParameterValueException("This subnet is overlapped with subnet in other network " + vlan.getNetworkId() + " in zone " + zone.getName()
- + " . Please specify a different gateway/netmask.");
- }
+ }
+ if ( overlapped ) {
+ throw new InvalidParameterValueException("The IP range with tag: " + vlan.getVlanTag()
+ + " in zone " + zone.getName()
+ + " has overlapped with the subnet. Please specify a different gateway/netmask.");
+ }
+ } else {
+
- String[] otherVlanIpRange = vlan.getIpRange().split("\\-");
- String otherVlanStartIP = otherVlanIpRange[0];
- String otherVlanEndIP = null;
- if (otherVlanIpRange.length > 1) {
- otherVlanEndIP = otherVlanIpRange[1];
- }
+ String[] otherVlanIpRange = vlan.getIpRange().split("\\-");
+ String otherVlanStartIP = otherVlanIpRange[0];
+ String otherVlanEndIP = null;
+ if (otherVlanIpRange.length > 1) {
+ otherVlanEndIP = otherVlanIpRange[1];
+ }
- //extend IP range
+ // extend IP range
- if (!vlanGateway.equals(otherVlanGateway) || !vlanNetmask.equals(vlan.getVlanNetmask())) {
+ if (!vlanGateway.equals(otherVlanGateway) || !vlanNetmask.equals(vlan.getVlanNetmask())) {
- throw new InvalidParameterValueException("The IP range has already been added with gateway " + otherVlanGateway + " ,and netmask " + otherVlanNetmask
- + ", Please specify the gateway/netmask if you want to extend ip range");
+ throw new InvalidParameterValueException("The IP range has already been added with gateway "
+ + otherVlanGateway + " ,and netmask " + otherVlanNetmask
+ + ", Please specify the gateway/netmask if you want to extend ip range" );
- }
- if (NetUtils.ipRangesOverlap(startIP, endIP, otherVlanStartIP, otherVlanEndIP)) {
+ }
+ if (NetUtils.ipRangesOverlap(startIP, endIP, otherVlanStartIP, otherVlanEndIP)) {
- throw new InvalidParameterValueException("The IP range already has IPs that overlap with the new range." + " Please specify a different start IP/end IP.");
+ throw new InvalidParameterValueException("The IP range already has IPs that overlap with the new range." +
+ " Please specify a different start IP/end IP.");
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/IpAddressManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/IpAddressManagerImpl.java
index 5e2046c,6596074..dbec06f
--- a/server/src/com/cloud/network/IpAddressManagerImpl.java
+++ b/server/src/com/cloud/network/IpAddressManagerImpl.java
@@@ -657,129 -654,129 +654,129 @@@ public class IpAddressManagerImpl exten
IPAddressVO addr = Transaction.execute(new TransactionCallbackWithException<IPAddressVO, InsufficientAddressCapacityException>() {
@Override
public IPAddressVO doInTransaction(TransactionStatus status) throws InsufficientAddressCapacityException {
- StringBuilder errorMessage = new StringBuilder("Unable to get ip adress in ");
- boolean fetchFromDedicatedRange = false;
- List<Long> dedicatedVlanDbIds = new ArrayList<Long>();
- List<Long> nonDedicatedVlanDbIds = new ArrayList<Long>();
-
- SearchCriteria<IPAddressVO> sc = null;
- if (podId != null) {
- sc = AssignIpAddressFromPodVlanSearch.create();
- sc.setJoinParameters("podVlanMapSB", "podId", podId);
- errorMessage.append(" pod id=" + podId);
- } else {
- sc = AssignIpAddressSearch.create();
- errorMessage.append(" zone id=" + dcId);
- }
+ StringBuilder errorMessage = new StringBuilder("Unable to get ip adress in ");
+ boolean fetchFromDedicatedRange = false;
+ List<Long> dedicatedVlanDbIds = new ArrayList<Long>();
+ List<Long> nonDedicatedVlanDbIds = new ArrayList<Long>();
+
+ SearchCriteria<IPAddressVO> sc = null;
+ if (podId != null) {
+ sc = AssignIpAddressFromPodVlanSearch.create();
+ sc.setJoinParameters("podVlanMapSB", "podId", podId);
+ errorMessage.append(" pod id=" + podId);
+ } else {
+ sc = AssignIpAddressSearch.create();
+ errorMessage.append(" zone id=" + dcId);
+ }
- // If owner has dedicated Public IP ranges, fetch IP from the dedicated range
- // Otherwise fetch IP from the system pool
- List<AccountVlanMapVO> maps = _accountVlanMapDao.listAccountVlanMapsByAccount(owner.getId());
- for (AccountVlanMapVO map : maps) {
- if (vlanDbIds == null || vlanDbIds.contains(map.getVlanDbId()))
- dedicatedVlanDbIds.add(map.getVlanDbId());
- }
- List<VlanVO> nonDedicatedVlans = _vlanDao.listZoneWideNonDedicatedVlans(dcId);
- for (VlanVO nonDedicatedVlan : nonDedicatedVlans) {
- if (vlanDbIds == null || vlanDbIds.contains(nonDedicatedVlan.getId()))
- nonDedicatedVlanDbIds.add(nonDedicatedVlan.getId());
- }
- if (dedicatedVlanDbIds != null && !dedicatedVlanDbIds.isEmpty()) {
- fetchFromDedicatedRange = true;
- sc.setParameters("vlanId", dedicatedVlanDbIds.toArray());
+ // If owner has dedicated Public IP ranges, fetch IP from the dedicated range
+ // Otherwise fetch IP from the system pool
+ List<AccountVlanMapVO> maps = _accountVlanMapDao.listAccountVlanMapsByAccount(owner.getId());
+ for (AccountVlanMapVO map : maps) {
+ if (vlanDbIds == null || vlanDbIds.contains(map.getVlanDbId()))
+ dedicatedVlanDbIds.add(map.getVlanDbId());
+ }
+ List<VlanVO> nonDedicatedVlans = _vlanDao.listZoneWideNonDedicatedVlans(dcId);
+ for (VlanVO nonDedicatedVlan : nonDedicatedVlans) {
+ if (vlanDbIds == null || vlanDbIds.contains(nonDedicatedVlan.getId()))
+ nonDedicatedVlanDbIds.add(nonDedicatedVlan.getId());
+ }
+ if (dedicatedVlanDbIds != null && !dedicatedVlanDbIds.isEmpty()) {
+ fetchFromDedicatedRange = true;
+ sc.setParameters("vlanId", dedicatedVlanDbIds.toArray());
- errorMessage.append(", vlanId id=" + Arrays.toString(dedicatedVlanDbIds.toArray()));
+ errorMessage.append(", vlanId id=" + dedicatedVlanDbIds.toArray());
- } else if (nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
- sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
+ } else if (nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
+ sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
- errorMessage.append(", vlanId id=" + Arrays.toString(nonDedicatedVlanDbIds.toArray()));
+ errorMessage.append(", vlanId id=" + nonDedicatedVlanDbIds.toArray());
- } else {
- if (podId != null) {
- InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", Pod.class, podId);
- ex.addProxyObject(ApiDBUtils.findPodById(podId).getUuid());
- throw ex;
- }
- s_logger.warn(errorMessage.toString());
- InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, dcId);
- ex.addProxyObject(ApiDBUtils.findZoneById(dcId).getUuid());
- throw ex;
- }
+ } else {
+ if (podId != null) {
+ InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", Pod.class, podId);
+ ex.addProxyObject(ApiDBUtils.findPodById(podId).getUuid());
+ throw ex;
+ }
+ s_logger.warn(errorMessage.toString());
+ InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, dcId);
+ ex.addProxyObject(ApiDBUtils.findZoneById(dcId).getUuid());
+ throw ex;
+ }
- sc.setParameters("dc", dcId);
+ sc.setParameters("dc", dcId);
- DataCenter zone = _entityMgr.findById(DataCenter.class, dcId);
+ DataCenter zone = _entityMgr.findById(DataCenter.class, dcId);
- // for direct network take ip addresses only from the vlans belonging to the network
- if (vlanUse == VlanType.DirectAttached) {
- sc.setJoinParameters("vlan", "networkId", guestNetworkId);
- errorMessage.append(", network id=" + guestNetworkId);
- }
- sc.setJoinParameters("vlan", "type", vlanUse);
+ // for direct network take ip addresses only from the vlans belonging to the network
+ if (vlanUse == VlanType.DirectAttached) {
+ sc.setJoinParameters("vlan", "networkId", guestNetworkId);
+ errorMessage.append(", network id=" + guestNetworkId);
+ }
+ sc.setJoinParameters("vlan", "type", vlanUse);
- if (requestedIp != null) {
- sc.addAnd("address", SearchCriteria.Op.EQ, requestedIp);
- errorMessage.append(": requested ip " + requestedIp + " is not available");
- }
+ if (requestedIp != null) {
+ sc.addAnd("address", SearchCriteria.Op.EQ, requestedIp);
+ errorMessage.append(": requested ip " + requestedIp + " is not available");
+ }
- Filter filter = new Filter(IPAddressVO.class, "vlanId", true, 0l, 1l);
+ Filter filter = new Filter(IPAddressVO.class, "vlanId", true, 0l, 1l);
- List<IPAddressVO> addrs = _ipAddressDao.lockRows(sc, filter, true);
+ List<IPAddressVO> addrs = _ipAddressDao.lockRows(sc, filter, true);
- // If all the dedicated IPs of the owner are in use fetch an IP from the system pool
- if (addrs.size() == 0 && fetchFromDedicatedRange) {
- // Verify if account is allowed to acquire IPs from the system
- boolean useSystemIps = UseSystemPublicIps.valueIn(owner.getId());
- if (useSystemIps && nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
- fetchFromDedicatedRange = false;
- sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
+ // If all the dedicated IPs of the owner are in use fetch an IP from the system pool
+ if (addrs.size() == 0 && fetchFromDedicatedRange) {
+ // Verify if account is allowed to acquire IPs from the system
+ boolean useSystemIps = UseSystemPublicIps.valueIn(owner.getId());
+ if (useSystemIps && nonDedicatedVlanDbIds != null && !nonDedicatedVlanDbIds.isEmpty()) {
+ fetchFromDedicatedRange = false;
+ sc.setParameters("vlanId", nonDedicatedVlanDbIds.toArray());
- errorMessage.append(", vlanId id=" + Arrays.toString(nonDedicatedVlanDbIds.toArray()));
+ errorMessage.append(", vlanId id=" + nonDedicatedVlanDbIds.toArray());
- addrs = _ipAddressDao.lockRows(sc, filter, true);
- }
- }
+ addrs = _ipAddressDao.lockRows(sc, filter, true);
+ }
+ }
- if (addrs.size() == 0) {
- if (podId != null) {
- InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", Pod.class, podId);
- // for now, we hardcode the table names, but we should ideally do a lookup for the tablename from the VO object.
- ex.addProxyObject(ApiDBUtils.findPodById(podId).getUuid());
- throw ex;
- }
- s_logger.warn(errorMessage.toString());
- InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, dcId);
- ex.addProxyObject(ApiDBUtils.findZoneById(dcId).getUuid());
- throw ex;
- }
+ if (addrs.size() == 0) {
+ if (podId != null) {
+ InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", Pod.class, podId);
+ // for now, we hardcode the table names, but we should ideally do a lookup for the tablename from the VO object.
+ ex.addProxyObject(ApiDBUtils.findPodById(podId).getUuid());
+ throw ex;
+ }
+ s_logger.warn(errorMessage.toString());
+ InsufficientAddressCapacityException ex = new InsufficientAddressCapacityException("Insufficient address capacity", DataCenter.class, dcId);
+ ex.addProxyObject(ApiDBUtils.findZoneById(dcId).getUuid());
+ throw ex;
+ }
- assert (addrs.size() == 1) : "Return size is incorrect: " + addrs.size();
+ assert (addrs.size() == 1) : "Return size is incorrect: " + addrs.size();
- if (!fetchFromDedicatedRange) {
- // Check that the maximum number of public IPs for the given accountId will not be exceeded
- try {
- _resourceLimitMgr.checkResourceLimit(owner, ResourceType.public_ip);
- } catch (ResourceAllocationException ex) {
- s_logger.warn("Failed to allocate resource of type " + ex.getResourceType() + " for account " + owner);
- throw new AccountLimitException("Maximum number of public IP addresses for account: " + owner.getAccountName() + " has been exceeded.");
- }
- }
+ if (!fetchFromDedicatedRange) {
+ // Check that the maximum number of public IPs for the given accountId will not be exceeded
+ try {
+ _resourceLimitMgr.checkResourceLimit(owner, ResourceType.public_ip);
+ } catch (ResourceAllocationException ex) {
+ s_logger.warn("Failed to allocate resource of type " + ex.getResourceType() + " for account " + owner);
+ throw new AccountLimitException("Maximum number of public IP addresses for account: " + owner.getAccountName() + " has been exceeded.");
+ }
+ }
- IPAddressVO addr = addrs.get(0);
- addr.setSourceNat(sourceNat);
- addr.setAllocatedTime(new Date());
- addr.setAllocatedInDomainId(owner.getDomainId());
- addr.setAllocatedToAccountId(owner.getId());
- addr.setSystem(isSystem);
+ IPAddressVO addr = addrs.get(0);
+ addr.setSourceNat(sourceNat);
+ addr.setAllocatedTime(new Date());
+ addr.setAllocatedInDomainId(owner.getDomainId());
+ addr.setAllocatedToAccountId(owner.getId());
+ addr.setSystem(isSystem);
- if (assign) {
- markPublicIpAsAllocated(addr);
- } else {
- addr.setState(IpAddress.State.Allocating);
- }
- addr.setState(assign ? IpAddress.State.Allocated : IpAddress.State.Allocating);
+ if (assign) {
+ markPublicIpAsAllocated(addr);
+ } else {
+ addr.setState(IpAddress.State.Allocating);
+ }
+ addr.setState(assign ? IpAddress.State.Allocated : IpAddress.State.Allocating);
- if (vlanUse != VlanType.DirectAttached) {
- addr.setAssociatedWithNetworkId(guestNetworkId);
- addr.setVpcId(vpcId);
- }
+ if (vlanUse != VlanType.DirectAttached) {
+ addr.setAssociatedWithNetworkId(guestNetworkId);
+ addr.setVpcId(vpcId);
+ }
- _ipAddressDao.update(addr.getId(), addr);
+ _ipAddressDao.update(addr.getId(), addr);
return addr;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/NetworkServiceImpl.java
index 474f510,bcadd69..41cc2ed
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@@ -1989,9 -1984,13 +1989,13 @@@ public class NetworkServiceImpl extend
network.setDisplayText(displayText);
}
+ if (customId != null) {
+ network.setUuid(customId);
+ }
+
// display flag is not null and has changed
if (displayNetwork != null && displayNetwork != network.getDisplayNetwork()) {
- if (!_accountMgr.isRootAdmin(callerAccount.getType())) {
+ if (!_accountMgr.isRootAdmin(callerAccount.getId())) {
throw new PermissionDeniedException("Only admin allowed to update displaynetwork parameter");
}
@@@ -4032,7 -4031,30 +4036,30 @@@
@Inject
public void setNetworkGurus(List<NetworkGuru> networkGurus) {
- this._networkGurus = networkGurus;
+ _networkGurus = networkGurus;
}
+ @Override
+ @ActionEvent(eventType = EventTypes.EVENT_NET_IP_UPDATE, eventDescription = "updating public ip address", async = true)
+ public IpAddress updateIP(Long id, String customId) {
+ Account caller = CallContext.current().getCallingAccount();
+ IPAddressVO ipVO = _ipAddressDao.findById(id);
+ if (ipVO == null) {
+ throw new InvalidParameterValueException("Unable to find ip address by id");
+ }
+
+ // verify permissions
+ if (ipVO.getAllocatedToAccountId() != null) {
+ _accountMgr.checkAccess(caller, null, true, ipVO);
+ } else if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN) {
+ throw new PermissionDeniedException("Only Root admin can update non-allocated ip addresses");
+ }
+
+ if (customId != null) {
+ ipVO.setUuid(customId);
+ }
+ _ipAddressDao.update(id, ipVO);
+ return _ipAddressDao.findById(id);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/rules/RulesManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
index 2ab34c5,ec43883..ef3bba9
--- a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
+++ b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
@@@ -33,7 -29,12 +33,9 @@@ import org.apache.cloudstack.api.comman
import org.apache.cloudstack.api.command.user.network.ListNetworkACLListsCmd;
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 com.cloud.event.ActionEvent;
+ import com.cloud.event.EventTypes;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.Network;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
index 71a639b,0b33ae3..446e385
--- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
@@@ -724,7 -725,24 +729,24 @@@ public class RemoteAccessVpnManagerImp
}
public void setVpnServiceProviders(List<RemoteAccessVPNServiceProvider> vpnServiceProviders) {
- this._vpnServiceProviders = vpnServiceProviders;
+ _vpnServiceProviders = vpnServiceProviders;
}
+ @Override
+ @ActionEvent(eventType = EventTypes.EVENT_REMOTE_ACCESS_VPN_UPDATE, eventDescription = "updating remote access vpn", async = true)
+ public RemoteAccessVpn updateRemoteAccessVpn(long id, String customId) {
+ final RemoteAccessVpnVO vpn = _remoteAccessVpnDao.findById(id);
+ if (vpn == null) {
+ throw new InvalidParameterValueException("Can't find remote access vpn by id " + id);
+ }
+
+ _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, vpn);
+ if (customId != null) {
+ vpn.setUuid(customId);
+ }
+
+ _remoteAccessVpnDao.update(vpn.getId(), vpn);
+ return _remoteAccessVpnDao.findById(id);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
index d296db1,2f6ad6c..03a13c3
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
@@@ -790,6 -780,43 +789,43 @@@ public class Site2SiteVpnManagerImpl ex
@Inject
public void setS2sProviders(List<Site2SiteVpnServiceProvider> s2sProviders) {
- this._s2sProviders = s2sProviders;
+ _s2sProviders = s2sProviders;
}
+
+ @Override
+ @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CONNECTION_UPDATE, eventDescription = "creating s2s vpn gateway", async = true)
+ public Site2SiteVpnConnection updateVpnConnection(long id, String customId) {
+ Account caller = CallContext.current().getCallingAccount();
+ Site2SiteVpnConnectionVO conn = _vpnConnectionDao.findById(id);
+ if (conn == null) {
+ throw new InvalidParameterValueException("Fail to find site to site VPN connection " + id);
+ }
+
+ _accountMgr.checkAccess(caller, null, false, conn);
+ if (customId != null) {
+ conn.setUuid(customId);
+ }
+
+ _vpnConnectionDao.update(id, conn);
+ return _vpnConnectionDao.findById(id);
+ }
+
+ @Override
+ @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_GATEWAY_UPDATE, eventDescription = "updating s2s vpn gateway", async = true)
+ public Site2SiteVpnGateway updateVpnGateway(Long id, String customId) {
+ Account caller = CallContext.current().getCallingAccount();
+
+ Site2SiteVpnGatewayVO vpnGateway = _vpnGatewayDao.findById(id);
+ if (vpnGateway == null) {
+ throw new InvalidParameterValueException("Fail to find vpn gateway with " + id);
+ }
+
+ _accountMgr.checkAccess(caller, null, false, vpnGateway);
+ if (customId != null) {
+ vpnGateway.setUuid(customId);
+ }
+ _vpnGatewayDao.update(id, vpnGateway);
+ return _vpnGatewayDao.findById(id);
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/resource/ResourceManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/server/ManagementServerImpl.java
index 0fe7f17,2a08ddc4..bd84692
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@@ -433,8 -434,11 +438,11 @@@ import org.apache.cloudstack.api.comman
import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd;
import org.apache.cloudstack.api.command.user.vpn.RemoveVpnUserCmd;
import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd;
+ import org.apache.cloudstack.api.command.user.vpn.UpdateRemoteAccessVpnCmd;
+ import org.apache.cloudstack.api.command.user.vpn.UpdateVpnConnectionCmd;
import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd;
+ import org.apache.cloudstack.api.command.user.vpn.UpdateVpnGatewayCmd;
-import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
+import org.apache.cloudstack.api.command.user.zone.ListZonesCmd;
import org.apache.cloudstack.config.Configuration;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/template/TemplateManagerImpl.java
index c84a9b7,70e4a49..dde18b9
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@@ -74,9 -72,6 +74,8 @@@ import org.apache.cloudstack.framework.
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
- import org.apache.cloudstack.framework.jobs.AsyncJobManager;
+import org.apache.cloudstack.framework.messagebus.MessageBus;
+import org.apache.cloudstack.framework.messagebus.PublishScope;
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
import org.apache.cloudstack.storage.command.AttachCommand;
import org.apache.cloudstack.storage.command.CommandResult;
@@@ -198,118 -175,78 +180,82 @@@ public class TemplateManagerImpl extend
private final static Logger s_logger = Logger.getLogger(TemplateManagerImpl.class);
@Inject
- VMTemplateDao _tmpltDao;
+ private VMTemplateDao _tmpltDao;
@Inject
- TemplateDataStoreDao _tmplStoreDao;
+ private TemplateDataStoreDao _tmplStoreDao;
@Inject
- VMTemplatePoolDao _tmpltPoolDao;
+ private VMTemplatePoolDao _tmpltPoolDao;
@Inject
- VMTemplateZoneDao _tmpltZoneDao;
+ private VMTemplateZoneDao _tmpltZoneDao;
@Inject
- protected UserVmDetailsDao _vmDetailsDao;
+ private VMInstanceDao _vmInstanceDao;
@Inject
- protected VMTemplateDetailsDao _templateDetailsDao;
+ private PrimaryDataStoreDao _poolDao;
@Inject
- VMInstanceDao _vmInstanceDao;
+ private StoragePoolHostDao _poolHostDao;
@Inject
- PrimaryDataStoreDao _poolDao;
+ private AccountDao _accountDao;
@Inject
- StoragePoolHostDao _poolHostDao;
+ private AgentManager _agentMgr;
@Inject
- EventDao _eventDao;
+ private AccountManager _accountMgr;
@Inject
- DownloadMonitor _downloadMonitor;
+ private HostDao _hostDao;
@Inject
- UploadMonitor _uploadMonitor;
+ private DataCenterDao _dcDao;
@Inject
- UserAccountDao _userAccountDao;
+ private UserVmDao _userVmDao;
@Inject
- AccountDao _accountDao;
+ private VolumeDao _volumeDao;
@Inject
- UserDao _userDao;
+ private SnapshotDao _snapshotDao;
@Inject
- AgentManager _agentMgr;
+ private ConfigurationDao _configDao;
@Inject
- AccountManager _accountMgr;
+ private DomainDao _domainDao;
@Inject
- HostDao _hostDao;
+ private GuestOSDao _guestOSDao;
@Inject
- DataCenterDao _dcDao;
+ private StorageManager _storageMgr;
@Inject
- UserVmDao _userVmDao;
+ private UsageEventDao _usageEventDao;
@Inject
- VolumeDao _volumeDao;
+ private AccountService _accountService;
@Inject
- SnapshotDao _snapshotDao;
+ private ResourceLimitService _resourceLimitMgr;
@Inject
- ConfigurationDao _configDao;
+ private LaunchPermissionDao _launchPermissionDao;
@Inject
- ClusterDao _clusterDao;
+ private ProjectManager _projectMgr;
@Inject
- DomainDao _domainDao;
+ private VolumeDataFactory _volFactory;
@Inject
- UploadDao _uploadDao;
+ private TemplateDataFactory _tmplFactory;
@Inject
- protected GuestOSDao _guestOSDao;
+ private SnapshotDataFactory _snapshotFactory;
@Inject
- StorageManager _storageMgr;
+ private TemplateService _tmpltSvr;
@Inject
- AsyncJobManager _asyncMgr;
+ private DataStoreManager _dataStoreMgr;
@Inject
- UserVmManager _vmMgr;
+ private VolumeOrchestrationService _volumeMgr;
@Inject
- UsageEventDao _usageEventDao;
+ private EndPointSelector _epSelector;
@Inject
- HypervisorGuruManager _hvGuruMgr;
- @Inject
- AccountService _accountService;
- @Inject
- ResourceLimitService _resourceLimitMgr;
- @Inject
- SecondaryStorageVmManager _ssvmMgr;
- @Inject
- LaunchPermissionDao _launchPermissionDao;
- @Inject
- ProjectManager _projectMgr;
- @Inject
- VolumeDataFactory _volFactory;
- @Inject
- TemplateDataFactory _tmplFactory;
- @Inject
- SnapshotDataFactory _snapshotFactory;
- @Inject
- TemplateService _tmpltSvr;
- @Inject
- DataStoreManager _dataStoreMgr;
- @Inject
- protected ResourceManager _resourceMgr;
- @Inject
- VolumeOrchestrationService _volumeMgr;
- @Inject
- ImageStoreDao _imageStoreDao;
- @Inject
- EndPointSelector _epSelector;
- @Inject
- UserVmJoinDao _userVmJoinDao;
- @Inject
- VMTemplateHostDao _vmTemplateHostDao;
+ private UserVmJoinDao _userVmJoinDao;
+
+ @Inject
- ConfigurationServer _configServer;
- @Inject
+ MessageBus _messageBus;
+
- int _primaryStorageDownloadWait;
- int _storagePoolMaxWaitSeconds = 3600;
- boolean _disableExtraction = false;
- ExecutorService _preloadExecutor;
+ private boolean _disableExtraction = false;
+ private ExecutorService _preloadExecutor;
- protected List<TemplateAdapter> _adapters;
+ private List<TemplateAdapter> _adapters;
@Inject
- StorageCacheManager cacheMgr;
+ private StorageCacheManager cacheMgr;
@Inject
- EndPointSelector selector;
+ private EndPointSelector selector;
private TemplateAdapter getAdapter(HypervisorType type) {
TemplateAdapter adapter = null;
@@@ -432,9 -369,9 +378,9 @@@
if (isISO) {
desc = Upload.Type.ISO.toString();
}
- eventId = (eventId == null ? 0 : eventId);
+ eventId = eventId == null ? 0 : eventId;
- if (!_accountMgr.isRootAdmin(caller.getType()) && _disableExtraction) {
+ if (!_accountMgr.isRootAdmin(caller.getId()) && _disableExtraction) {
throw new PermissionDeniedException("Extraction has been disabled by admin");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/vm/UserVmManagerImpl.java
index 0089476,f6f20cc..2957bac
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@@ -4559,16 -4735,19 +4557,19 @@@ public class UserVmManagerImpl extends
_volsDao.detachVolume(root.getId());
volumeMgr.destroyVolume(root);
- // For VMware hypervisor since the old root volume is replaced by the new root volume in storage, force expunge old root volume
+ // For VMware hypervisor since the old root volume is replaced by the new root volume, force expunge old root volume if it has been created in storage
if (vm.getHypervisorType() == HypervisorType.VMware) {
+ VolumeInfo volumeInStorage = volFactory.getVolume(root.getId());
+ if (volumeInStorage != null) {
- s_logger.info("Expunging volume " + root.getId() + " from primary data store");
- AsyncCallFuture<VolumeApiResult> future = _volService.expungeVolumeAsync(volFactory.getVolume(root.getId()));
- try {
- future.get();
- } catch (Exception e) {
- s_logger.debug("Failed to expunge volume:" + root.getId(), e);
- }
+ s_logger.info("Expunging volume " + root.getId() + " from primary data store");
+ AsyncCallFuture<VolumeApiResult> future = _volService.expungeVolumeAsync(volFactory.getVolume(root.getId()));
+ try {
+ future.get();
+ } catch (Exception e) {
+ s_logger.debug("Failed to expunge volume:" + root.getId(), e);
}
}
++ }
if (template.getEnablePassword()) {
String password = generateRandomPassword();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3b58a45e/server/src/org/apache/cloudstack/network/lb/ApplicationLoadBalancerManagerImpl.java
----------------------------------------------------------------------