You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2013/05/16 04:42:14 UTC
[01/18] git commit: updated refs/heads/object_store to c476d78
Updated Branches:
refs/heads/object_store b66c48490 -> c476d7866
CLOUDSTACK-2459 Fix the scale vm tests
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4c9ca2b5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4c9ca2b5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4c9ca2b5
Branch: refs/heads/object_store
Commit: 4c9ca2b50231d1df203d93df82280b8021f18a4d
Parents: c75b189
Author: Nitin Mehta <ni...@citrix.com>
Authored: Wed May 15 14:25:39 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:47 2013 -0700
----------------------------------------------------------------------
server/test/com/cloud/vm/UserVmManagerTest.java | 17 ++++++++---------
1 files changed, 8 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4c9ca2b5/server/test/com/cloud/vm/UserVmManagerTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/UserVmManagerTest.java b/server/test/com/cloud/vm/UserVmManagerTest.java
index 939ecdc..6a97114 100755
--- a/server/test/com/cloud/vm/UserVmManagerTest.java
+++ b/server/test/com/cloud/vm/UserVmManagerTest.java
@@ -246,8 +246,8 @@ public class UserVmManagerTest {
}
- // Test scaleVm on incompatible HV.
- //@Test(expected=InvalidParameterValueException.class)
+ // Test scaleVm on equal service offerings.
+ @Test(expected=InvalidParameterValueException.class)
public void testScaleVMF2() throws Exception {
ScaleVMCmd cmd = new ScaleVMCmd();
@@ -261,14 +261,11 @@ 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();
+ doReturn(VirtualMachine.State.Running).when(_vmInstance).getState();
doNothing().when(_accountMgr).checkAccess(_account, null, true, _templateMock);
@@ -285,8 +282,8 @@ public class UserVmManagerTest {
}
- // Test scaleVm for Stopped vm. Full positive test.
- //@Test
+ // Test scaleVm for Stopped vm.
+ @Test(expected=InvalidParameterValueException.class)
public void testScaleVMF3() throws Exception {
ScaleVMCmd cmd = new ScaleVMCmd();
@@ -316,10 +313,12 @@ public class UserVmManagerTest {
when(_configMgr.getServiceOffering(1L)).thenReturn(so1);
doReturn(VirtualMachine.State.Stopped).when(_vmInstance).getState();
+ when(_vmDao.findById(anyLong())).thenReturn(null);
+
doReturn(true).when(_itMgr).upgradeVmDb(anyLong(),anyLong());
- when(_vmDao.findById(anyLong())).thenReturn(_vmMock);
+ //when(_vmDao.findById(anyLong())).thenReturn(_vmMock);
_userVmMgr.upgradeVirtualMachine(cmd);
[12/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2369 fixed adding same private gw twice
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/85789534
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/85789534
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/85789534
Branch: refs/heads/object_store
Commit: 85789534f016c0ae5e5a4fe19c18938819d96e99
Parents: 1f5ae4b
Author: Jayapal <ja...@citrix.com>
Authored: Wed May 15 15:40:23 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
.../com/cloud/network/vpc/dao/PrivateIpDao.java | 3 ++-
.../cloud/network/vpc/dao/PrivateIpDaoImpl.java | 11 ++++++++++-
.../src/com/cloud/network/NetworkServiceImpl.java | 4 +++-
3 files changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85789534/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
index 02df92e..ff8c26a 100644
--- a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
+++ b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDao.java
@@ -70,6 +70,7 @@ public interface PrivateIpDao extends GenericDao<PrivateIpVO, Long>{
*/
PrivateIpVO findByIpAndVpcId(long vpcId, String ip4Address);
-
+
+ PrivateIpVO findByIpAndSourceNetworkIdAndVpcId(long networkId, String ip4Address, long vpcId);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85789534/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
index ecab3bb..fe435c0 100644
--- a/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/vpc/dao/PrivateIpDaoImpl.java
@@ -114,7 +114,16 @@ public class PrivateIpDaoImpl extends GenericDaoBase<PrivateIpVO, Long> implemen
sc.setParameters("networkId", networkId);
return findOneBy(sc);
}
-
+
+ @Override
+ public PrivateIpVO findByIpAndSourceNetworkIdAndVpcId(long networkId, String ip4Address, long vpcId) {
+ SearchCriteria<PrivateIpVO> sc = AllFieldsSearch.create();
+ sc.setParameters("ip", ip4Address);
+ sc.setParameters("networkId", networkId);
+ sc.setParameters("vpcId", vpcId);
+ return findOneBy(sc);
+ }
+
@Override
public PrivateIpVO findByIpAndVpcId(long vpcId, String ip4Address) {
SearchCriteria<PrivateIpVO> sc = AllFieldsSearch.create();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85789534/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index f3ec253..d3ef320 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -3813,10 +3813,12 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
s_logger.debug("Created private network " + privateNetwork);
} else {
s_logger.debug("Private network already exists: " + privateNetwork);
+ throw new InvalidParameterValueException("Private network for the vlan: " + vlan + " and cidr "+ cidr +" already exists " +
+ " in zone " + _configMgr.getZone(pNtwk.getDataCenterId()).getName());
}
//add entry to private_ip_address table
- PrivateIpVO privateIp = _privateIpDao.findByIpAndSourceNetworkId(privateNetwork.getId(), startIp);
+ PrivateIpVO privateIp = _privateIpDao.findByIpAndSourceNetworkIdAndVpcId(privateNetwork.getId(), startIp, vpcId);
if (privateIp != null) {
throw new InvalidParameterValueException("Private ip address " + startIp + " already used for private gateway" +
" in zone " + _configMgr.getZone(pNtwk.getDataCenterId()).getName());
[13/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2116
Public IP addresses resource count of an account - number of ip addresses dedicated to an account
plus the number of ip addresses belonging to the system that have been allocated to the account
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fd354dbd
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fd354dbd
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fd354dbd
Branch: refs/heads/object_store
Commit: fd354dbd7c9a6a25a0a3560b6db530fc7f5ece72
Parents: cf1fada
Author: Likitha Shetty <li...@citrix.com>
Authored: Tue May 14 14:24:47 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
engine/schema/src/com/cloud/dc/dao/VlanDao.java | 2 +
.../schema/src/com/cloud/dc/dao/VlanDaoImpl.java | 15 +++++++++
.../configuration/ConfigurationManagerImpl.java | 10 ++++++-
.../src/com/cloud/network/NetworkManagerImpl.java | 16 +++++-----
.../resourcelimit/ResourceLimitManagerImpl.java | 23 ++++++++++++++-
5 files changed, 56 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fd354dbd/engine/schema/src/com/cloud/dc/dao/VlanDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/VlanDao.java b/engine/schema/src/com/cloud/dc/dao/VlanDao.java
index 605fb20..39fa818 100755
--- a/engine/schema/src/com/cloud/dc/dao/VlanDao.java
+++ b/engine/schema/src/com/cloud/dc/dao/VlanDao.java
@@ -54,4 +54,6 @@ public interface VlanDao extends GenericDao<VlanVO, Long> {
List<VlanVO> listZoneWideNonDedicatedVlans(long zoneId);
List<VlanVO> listVlansByNetworkIdAndGateway(long networkid, String gateway);
+
+ List<VlanVO> listDedicatedVlans(long accountId);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fd354dbd/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
index e8c68b1..eb3bde9 100755
--- a/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
+++ b/engine/schema/src/com/cloud/dc/dao/VlanDaoImpl.java
@@ -58,6 +58,7 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
protected SearchBuilder<VlanVO> PhysicalNetworkVlanSearch;
protected SearchBuilder<VlanVO> ZoneWideNonDedicatedVlanSearch;
protected SearchBuilder<VlanVO> VlanGatewaysearch;
+ protected SearchBuilder<VlanVO> DedicatedVlanSearch;
protected SearchBuilder<AccountVlanMapVO> AccountVlanMapSearch;
@@ -213,6 +214,13 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
ZoneWideNonDedicatedVlanSearch.done();
AccountVlanMapSearch.done();
+ DedicatedVlanSearch = createSearchBuilder();
+ AccountVlanMapSearch = _accountVlanMapDao.createSearchBuilder();
+ AccountVlanMapSearch.and("accountId", AccountVlanMapSearch.entity().getAccountId(), SearchCriteria.Op.EQ);
+ DedicatedVlanSearch.join("AccountVlanMapSearch", AccountVlanMapSearch, DedicatedVlanSearch.entity().getId(), AccountVlanMapSearch.entity().getVlanDbId(), JoinBuilder.JoinType.LEFTOUTER);
+ DedicatedVlanSearch.done();
+ AccountVlanMapSearch.done();
+
return result;
}
@@ -343,4 +351,11 @@ public class VlanDaoImpl extends GenericDaoBase<VlanVO, Long> implements VlanDao
return listBy(sc);
}
+ @Override
+ public List<VlanVO> listDedicatedVlans(long accountId) {
+ SearchCriteria<VlanVO> sc = DedicatedVlanSearch.create();
+ sc.setJoinParameters("AccountVlanMapSearch", "accountId", accountId);
+ return listBy(sc);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fd354dbd/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 045c333..2837535 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -2852,6 +2852,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
ip.getSystem(), ip.getClass().getName(), ip.getUuid());
}
+ // increment resource count for dedicated public ip's
+ _resourceLimitMgr.incrementResourceCount(vlanOwner.getId(), ResourceType.public_ip, new Long(ips.size()));
} else if (podId != null) {
// This VLAN is pod-wide, so create a PodVlanMapVO entry
PodVlanMapVO podVlanMapVO = new PodVlanMapVO(podId, vlan.getId());
@@ -3122,6 +3124,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
ip.getSystem(), ip.getClass().getName(), ip.getUuid());
}
+
+ // increment resource count for dedicated public ip's
+ _resourceLimitMgr.incrementResourceCount(vlanOwner.getId(), ResourceType.public_ip, new Long(ips.size()));
+
return vlan;
}
@@ -3185,10 +3191,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
if (_accountVlanMapDao.remove(acctVln.get(0).getId())) {
// generate usage events to remove dedication for every ip in the range
for (IPAddressVO ip : ips) {
- UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getId(),
+ UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_RELEASE, acctVln.get(0).getAccountId(),
ip.getDataCenterId(), ip.getId(), ip.getAddress().toString(), ip.isSourceNat(), vlan.getVlanType().toString(),
ip.getSystem(), ip.getClass().getName(), ip.getUuid());
}
+ // decrement resource count for dedicated public ip's
+ _resourceLimitMgr.decrementResourceCount(acctVln.get(0).getAccountId(), ResourceType.public_ip, new Long(ips.size()));
return true;
} else {
return false;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fd354dbd/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index d37f7c9..8834724 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -393,8 +393,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
addr.getDataCenterId(), addr.getId(), addr.getAddress().toString(), addr.isSourceNat(), guestType,
addr.getSystem(), addr.getClass().getName(), addr.getUuid());
}
- // don't increment resource count for direct ip addresses
- if (addr.getAssociatedWithNetworkId() != null) {
+ // don't increment resource count for direct and dedicated ip addresses
+ if (addr.getAssociatedWithNetworkId() != null && !isIpDedicated(addr)) {
_resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.public_ip);
}
}
@@ -639,10 +639,6 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
s_logger.debug("Associate IP address lock acquired");
}
- // Check that the maximum number of public IPs for the given
- // accountId will not be exceeded
- _resourceLimitMgr.checkResourceLimit(accountToLock, ResourceType.public_ip);
-
txn.start();
// If account has dedicated Public IP ranges, allocate IP from the dedicated range
@@ -667,6 +663,10 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
}
if (!allocateFromDedicatedRange) {
+ // Check that the maximum number of public IPs for the given
+ // accountId will not be exceeded
+ _resourceLimitMgr.checkResourceLimit(accountToLock, ResourceType.public_ip);
+
List<VlanVO> nonDedicatedVlans = _vlanDao.listZoneWideNonDedicatedVlans(zone.getId());
for (VlanVO nonDedicatedVlan : nonDedicatedVlans) {
nonDedicatedVlanDbIds.add(nonDedicatedVlan.getId());
@@ -2963,8 +2963,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
if (ip.getState() != State.Releasing) {
txn.start();
- // don't decrement resource count for direct ips
- if (ip.getAssociatedWithNetworkId() != null) {
+ // don't decrement resource count for direct and dedicated ips
+ if (ip.getAssociatedWithNetworkId() != null && !isIpDedicated(ip)) {
_resourceLimitMgr.decrementResourceCount(_ipAddressDao.findById(addrId).getAllocatedToAccountId(), ResourceType.public_ip);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fd354dbd/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
index d0d7f31..b5c060d 100755
--- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
+++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
@@ -48,6 +48,8 @@ import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.configuration.dao.ResourceCountDao;
import com.cloud.configuration.dao.ResourceLimitDao;
import com.cloud.dao.EntityManager;
+import com.cloud.dc.VlanVO;
+import com.cloud.dc.dao.VlanDao;
import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
@@ -55,6 +57,7 @@ import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.ResourceAllocationException;
import com.cloud.network.dao.IPAddressDao;
+import com.cloud.network.dao.IPAddressVO;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.vpc.dao.VpcDao;
import com.cloud.projects.Project;
@@ -143,6 +146,8 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
private ServiceOfferingDao _serviceOfferingDao;
@Inject
private TemplateDataStoreDao _vmTemplateStoreDao;
+ @Inject
+ private VlanDao _vlanDao;
protected GenericSearchBuilder<TemplateDataStoreVO, SumCount> templateSizeSearch;
@@ -817,7 +822,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
} else if (type == Resource.ResourceType.snapshot) {
newCount = _snapshotDao.countSnapshotsForAccount(accountId);
} else if (type == Resource.ResourceType.public_ip) {
- newCount = _ipAddressDao.countAllocatedIPsForAccount(accountId);
+ newCount = calculatePublicIpForAccount(accountId);
} else if (type == Resource.ResourceType.template) {
newCount = _vmTemplateDao.countTemplatesForAccount(accountId);
} else if (type == Resource.ResourceType.project) {
@@ -909,6 +914,22 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
return totalVolumesSize + totalSnapshotsSize + totalTemplatesSize;
}
+ private long calculatePublicIpForAccount(long accountId) {
+ Long dedicatedCount = 0L;
+ Long allocatedCount = 0L;
+
+ List<VlanVO> dedicatedVlans = _vlanDao.listDedicatedVlans(accountId);
+ for (VlanVO dedicatedVlan : dedicatedVlans) {
+ List<IPAddressVO> ips = _ipAddressDao.listByVlanId(dedicatedVlan.getId());
+ dedicatedCount += new Long(ips.size());
+ }
+ allocatedCount = _ipAddressDao.countAllocatedIPsForAccount(accountId);
+ if (dedicatedCount > allocatedCount)
+ return dedicatedCount;
+ else
+ return allocatedCount;
+ }
+
@Override
public long getResourceCount(Account account, ResourceType type) {
return _resourceCountDao.getResourceCount(account.getId(), ResourceOwnerType.Account, type);
[05/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-1904: API : UI : Admin can not delete Events/Archive from other accounts
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/88422248
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/88422248
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/88422248
Branch: refs/heads/object_store
Commit: 88422248ccbf2585f7b9c25c78e4732c5a8b7158
Parents: 50eeae8
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Fri Apr 26 16:47:56 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:48 2013 -0700
----------------------------------------------------------------------
.../api/command/user/event/DeleteEventsCmd.java | 1 -
.../schema/src/com/cloud/domain/dao/DomainDao.java | 9 +++--
.../src/com/cloud/domain/dao/DomainDaoImpl.java | 18 +++++++++-
.../schema/src/com/cloud/event/dao/EventDao.java | 2 +-
.../src/com/cloud/event/dao/EventDaoImpl.java | 27 ++++++++-------
.../schema/src/com/cloud/user/dao/AccountDao.java | 1 +
.../src/com/cloud/user/dao/AccountDaoImpl.java | 19 +++++++++-
.../src/com/cloud/server/ManagementServerImpl.java | 24 ++++++++++++-
.../com/cloud/event/EventControlsUnitTest.java | 3 +-
9 files changed, 77 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/api/src/org/apache/cloudstack/api/command/user/event/DeleteEventsCmd.java
----------------------------------------------------------------------
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 55ca92a..a03e6d9 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
@@ -25,7 +25,6 @@ import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
-import org.apache.cloudstack.api.response.AlertResponse;
import org.apache.cloudstack.api.response.EventResponse;
import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.log4j.Logger;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/domain/dao/DomainDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/domain/dao/DomainDao.java b/engine/schema/src/com/cloud/domain/dao/DomainDao.java
index afeb0f4..cb1c1f2 100644
--- a/engine/schema/src/com/cloud/domain/dao/DomainDao.java
+++ b/engine/schema/src/com/cloud/domain/dao/DomainDao.java
@@ -26,9 +26,10 @@ public interface DomainDao extends GenericDao<DomainVO, Long> {
public DomainVO create(DomainVO domain);
public DomainVO findDomainByPath(String domainPath);
public boolean isChildDomain(Long parentId, Long childId);
- DomainVO findImmediateChildForParent(Long parentId);
- List<DomainVO> findImmediateChildrenForParent(Long parentId);
- List<DomainVO> findAllChildren(String path, Long parentId);
- List<DomainVO> findInactiveDomains();
+ DomainVO findImmediateChildForParent(Long parentId);
+ List<DomainVO> findImmediateChildrenForParent(Long parentId);
+ List<DomainVO> findAllChildren(String path, Long parentId);
+ List<DomainVO> findInactiveDomains();
Set<Long> getDomainParentIds(long domainId);
+ List<Long> getDomainChildrenIds(String path);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java b/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
index c30ca5e..9460a73 100644
--- a/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
+++ b/engine/schema/src/com/cloud/domain/dao/DomainDaoImpl.java
@@ -32,6 +32,7 @@ import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.Transaction;
@@ -46,6 +47,7 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
protected SearchBuilder<DomainVO> DomainPairSearch;
protected SearchBuilder<DomainVO> ImmediateChildDomainSearch;
protected SearchBuilder<DomainVO> FindAllChildrenSearch;
+ protected GenericSearchBuilder<DomainVO, Long> FindIdsOfAllChildrenSearch;
protected SearchBuilder<DomainVO> AllFieldsSearch;
public DomainDaoImpl () {
@@ -70,7 +72,12 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
FindAllChildrenSearch.and("path", FindAllChildrenSearch.entity().getPath(), SearchCriteria.Op.LIKE);
FindAllChildrenSearch.and("id", FindAllChildrenSearch.entity().getId(), SearchCriteria.Op.NEQ);
FindAllChildrenSearch.done();
-
+
+ FindIdsOfAllChildrenSearch = createSearchBuilder(Long.class);
+ FindIdsOfAllChildrenSearch.selectField(FindIdsOfAllChildrenSearch.entity().getId());
+ FindIdsOfAllChildrenSearch.and("path", FindIdsOfAllChildrenSearch.entity().getPath(), SearchCriteria.Op.LIKE);
+ FindIdsOfAllChildrenSearch.done();
+
AllFieldsSearch = createSearchBuilder();
AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), SearchCriteria.Op.EQ);
AllFieldsSearch.and("state", AllFieldsSearch.entity().getState(), SearchCriteria.Op.EQ);
@@ -221,7 +228,14 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
sc.setParameters("id", parentId);
return listBy(sc);
}
-
+
+ @Override
+ public List<Long> getDomainChildrenIds(String path){
+ SearchCriteria<Long> sc = FindIdsOfAllChildrenSearch.create();
+ sc.setParameters("path", path+"%");
+ return customSearch(sc, null);
+ }
+
@Override
public boolean isChildDomain(Long parentId, Long childId) {
if ((parentId == null) || (childId == null)) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/event/dao/EventDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/event/dao/EventDao.java b/engine/schema/src/com/cloud/event/dao/EventDao.java
index da5f47a..9454ce7 100644
--- a/engine/schema/src/com/cloud/event/dao/EventDao.java
+++ b/engine/schema/src/com/cloud/event/dao/EventDao.java
@@ -31,7 +31,7 @@ public interface EventDao extends GenericDao<EventVO, Long> {
EventVO findCompletedEvent(long startId);
- public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, Long accountId);
+ public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, List<Long> accountIds);
public void archiveEvents(List<EventVO> events);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java b/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
index 6ba59c5..0d3d38a 100644
--- a/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
+++ b/engine/schema/src/com/cloud/event/dao/EventDaoImpl.java
@@ -49,7 +49,7 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
ToArchiveOrDeleteEventSearch = createSearchBuilder();
ToArchiveOrDeleteEventSearch.and("id", ToArchiveOrDeleteEventSearch.entity().getId(), Op.IN);
ToArchiveOrDeleteEventSearch.and("type", ToArchiveOrDeleteEventSearch.entity().getType(), Op.EQ);
- ToArchiveOrDeleteEventSearch.and("accountId", ToArchiveOrDeleteEventSearch.entity().getAccountId(), Op.EQ);
+ ToArchiveOrDeleteEventSearch.and("accountIds", ToArchiveOrDeleteEventSearch.entity().getAccountId(), Op.IN);
ToArchiveOrDeleteEventSearch.and("createDateL", ToArchiveOrDeleteEventSearch.entity().getCreateDate(), Op.LT);
ToArchiveOrDeleteEventSearch.done();
}
@@ -76,7 +76,7 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
}
@Override
- public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, Long accountId) {
+ public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Date olderThan, List<Long> accountIds) {
SearchCriteria<EventVO> sc = ToArchiveOrDeleteEventSearch.create();
if (ids != null) {
sc.setParameters("id", ids.toArray(new Object[ids.size()]));
@@ -87,23 +87,24 @@ public class EventDaoImpl extends GenericDaoBase<EventVO, Long> implements Event
if (olderThan != null) {
sc.setParameters("createDateL", olderThan);
}
- if (accountId != null) {
- sc.setParameters("accountId", accountId);
+ if (accountIds != null && !accountIds.isEmpty()) {
+ sc.setParameters("accountIds", accountIds.toArray(new Object[accountIds.size()]));
}
return search(sc, null);
}
@Override
public void archiveEvents(List<EventVO> events) {
-
- Transaction txn = Transaction.currentTxn();
- txn.start();
- for (EventVO event : events) {
- event = lockRow(event.getId(), true);
- event.setArchived(true);
- update(event.getId(), event);
- txn.commit();
+ if (events != null && !events.isEmpty()) {
+ Transaction txn = Transaction.currentTxn();
+ txn.start();
+ for (EventVO event : events) {
+ event = lockRow(event.getId(), true);
+ event.setArchived(true);
+ update(event.getId(), event);
+ txn.commit();
+ }
+ txn.close();
}
- txn.close();
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/user/dao/AccountDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/dao/AccountDao.java b/engine/schema/src/com/cloud/user/dao/AccountDao.java
index 3b7fa66..204da39 100644
--- a/engine/schema/src/com/cloud/user/dao/AccountDao.java
+++ b/engine/schema/src/com/cloud/user/dao/AccountDao.java
@@ -49,4 +49,5 @@ public interface AccountDao extends GenericDao<AccountVO, Long> {
//returns only non-removed account
Account findActiveAccount(String accountName, Long domainId);
Account findActiveNonProjectAccount(String accountName, Long domainId);
+ List<Long> getAccountIdsForDomains(List<Long> ids);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java b/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
index 892fdcd..aa67e86 100755
--- a/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
+++ b/engine/schema/src/com/cloud/user/dao/AccountDaoImpl.java
@@ -35,8 +35,10 @@ import com.cloud.utils.Pair;
import com.cloud.utils.crypt.DBEncryptionUtil;
import com.cloud.utils.db.Filter;
import com.cloud.utils.db.GenericDaoBase;
+import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
+import com.cloud.utils.db.SearchCriteria.Op;
import com.cloud.utils.db.Transaction;
@Component
@@ -54,7 +56,8 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
protected final SearchBuilder<AccountVO> CleanupForRemovedAccountsSearch;
protected final SearchBuilder<AccountVO> CleanupForDisabledAccountsSearch;
protected final SearchBuilder<AccountVO> NonProjectAccountSearch;
-
+ protected final GenericSearchBuilder<AccountVO, Long> AccountIdsSearch;
+
public AccountDaoImpl() {
AllFieldsSearch = createSearchBuilder();
AllFieldsSearch.and("accountName", AllFieldsSearch.entity().getAccountName(), SearchCriteria.Op.EQ);
@@ -91,6 +94,11 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
NonProjectAccountSearch.and("state", NonProjectAccountSearch.entity().getState(), SearchCriteria.Op.EQ);
NonProjectAccountSearch.and("type", NonProjectAccountSearch.entity().getType(), SearchCriteria.Op.NEQ);
NonProjectAccountSearch.done();
+
+ AccountIdsSearch = createSearchBuilder(Long.class);
+ AccountIdsSearch.selectField(AccountIdsSearch.entity().getId());
+ AccountIdsSearch.and("ids", AccountIdsSearch.entity().getDomainId(), Op.IN);
+ AccountIdsSearch.done();
}
@Override
@@ -263,5 +271,12 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
}
}
}
-
+
+ @Override
+ public List<Long> getAccountIdsForDomains(List<Long> domainIds) {
+ SearchCriteria<Long> sc = AccountIdsSearch.create();
+ sc.setParameters("ids", domainIds.toArray(new Object[domainIds.size()]));
+ return customSearch(sc, null);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index c3913a5..6e8ce86 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -957,10 +957,20 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
@Override
public boolean archiveEvents(ArchiveEventsCmd cmd) {
+ Account caller = UserContext.current().getCaller();
List<Long> ids = cmd.getIds();
boolean result =true;
+ List<Long> permittedAccountIds = new ArrayList<Long>();
+
+ if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL && caller.getType() == Account.ACCOUNT_TYPE_PROJECT) {
+ permittedAccountIds.add(caller.getId());
+ } else {
+ DomainVO domain = _domainDao.findById(caller.getDomainId());
+ List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath());
+ permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds);
+ }
- List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), cmd.getEntityOwnerId());
+ List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), permittedAccountIds);
ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]);
_accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents);
@@ -974,10 +984,20 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
@Override
public boolean deleteEvents(DeleteEventsCmd cmd) {
+ Account caller = UserContext.current().getCaller();
List<Long> ids = cmd.getIds();
boolean result =true;
+ List<Long> permittedAccountIds = new ArrayList<Long>();
+
+ if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL || caller.getType() == Account.ACCOUNT_TYPE_PROJECT) {
+ permittedAccountIds.add(caller.getId());
+ } else {
+ DomainVO domain = _domainDao.findById(caller.getDomainId());
+ List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath());
+ permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds);
+ }
- List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), cmd.getEntityOwnerId());
+ List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getOlderThan(), permittedAccountIds);
ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]);
_accountMgr.checkAccess(UserContext.current().getCaller(), null, true, sameOwnerEvents);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88422248/server/test/com/cloud/event/EventControlsUnitTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/event/EventControlsUnitTest.java b/server/test/com/cloud/event/EventControlsUnitTest.java
index 3c25275..e2a86cd 100644
--- a/server/test/com/cloud/event/EventControlsUnitTest.java
+++ b/server/test/com/cloud/event/EventControlsUnitTest.java
@@ -18,7 +18,6 @@ package com.cloud.event;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyList;
-import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;
@@ -58,7 +57,7 @@ public class EventControlsUnitTest extends TestCase{
_mgmtServer._eventDao = _eventDao;
_mgmtServer._accountMgr = _accountMgr;
doNothing().when(_accountMgr).checkAccess(any(Account.class), any(AccessType.class), any(Boolean.class), any(ControlledEntity.class));
- when(_eventDao.listToArchiveOrDeleteEvents(anyList(), anyString(), any(Date.class), anyLong())).thenReturn(_events);
+ when(_eventDao.listToArchiveOrDeleteEvents(anyList(), anyString(), any(Date.class), anyList())).thenReturn(_events);
}
@After
[16/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
Fixed applyLbRules for Netscaler.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9240095d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9240095d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9240095d
Branch: refs/heads/object_store
Commit: 9240095d922d11a869c56920cb4a8b74ebb6e04e
Parents: 20a9d87
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Wed May 15 10:32:32 2013 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:50 2013 -0700
----------------------------------------------------------------------
.../cloud/network/element/NetscalerElement.java | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9240095d/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index 60d6674..cc2bcc1 100644
--- a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
+++ b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
@@ -240,7 +240,7 @@ public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl impl
return false;
}
- if (canHandleLbRules(rules)) {
+ if (!canHandleLbRules(rules)) {
return false;
}
[04/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2085: VM weight on xen remain same as before vmscaleup ;because "Add-To-VCPUs-Params-Live.sh" is not getting copied on xs host
Fixed by updating the patch files that has
entries to copy scipts on xenserver. Here we added
Add-To-VCPUs-Params-Live.sh
Added a check on Host params whether host restricts Dynamic memory control(DMC) to able to allow scale up VM.
If DMC is not enabled then static max and min are set to SO.
Signed Off by - Nitin Mehta <ni...@citrix.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ca0d2ef8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ca0d2ef8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ca0d2ef8
Branch: refs/heads/object_store
Commit: ca0d2ef8c2244f40cb7e47601fb6de8277dbb6e5
Parents: 8842224
Author: Harikrishna Patnala <ha...@citrix.com>
Authored: Wed May 15 16:00:25 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:48 2013 -0700
----------------------------------------------------------------------
.../xen/resource/CitrixResourceBase.java | 8 +++-
.../xen/resource/XenServer56FP1Resource.java | 13 +++++-
.../xen/resource/CitrixResourceBaseTest.java | 8 ++--
.../xenserver/Add-To-VCPUs-Params-Live.sh | 33 ---------------
.../xenserver/add_to_vcpus_params_live.sh | 33 +++++++++++++++
scripts/vm/hypervisor/xenserver/vmops | 2 +-
scripts/vm/hypervisor/xenserver/xcpserver/patch | 1 +
scripts/vm/hypervisor/xenserver/xenserver56/patch | 1 +
.../vm/hypervisor/xenserver/xenserver56fp1/patch | 1 +
scripts/vm/hypervisor/xenserver/xenserver60/patch | 1 +
10 files changed, 60 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index cfb673f..0828dc4 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -691,7 +691,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (vmSpec.getLimitCpuUse()) {
long utilization = 0; // max CPU cap, default is unlimited
utilization = ((long)speed * 100 * vmSpec.getCpus()) / _host.speed ;
- vm.addToVCPUsParamsLive(conn, "cap", Long.toString(utilization));
+ //vm.addToVCPUsParamsLive(conn, "cap", Long.toString(utilization)); currently xenserver doesnot support Xapi to add VCPUs params live.
+ callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", Long.toString(utilization), "vmname", vmSpec.getName() );
}
//vm.addToVCPUsParamsLive(conn, "weight", Integer.toString(cpuWeight));
callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", Integer.toString(cpuWeight), "vmname", vmSpec.getName() );
@@ -724,6 +725,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
for (VM vm : vms) {
VM.Record vmr = vm.getRecord(conn);
try {
+ Map<String, String> hostParams = new HashMap<String, String>();
+ hostParams = host.getLicenseParams(conn);
+ if (hostParams.get("restrict_dmc").equalsIgnoreCase("true")) {
+ throw new CloudRuntimeException("Host "+ _host.uuid + " does not support Dynamic Memory Control, so we cannot scale up the vm");
+ }
scaleVM(conn, vm, vmSpec, host);
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
index 0982158..d2b96e4 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
@@ -142,8 +142,17 @@ public class XenServer56FP1Resource extends XenServer56Resource {
record.actionsAfterShutdown = Types.OnNormalExit.DESTROY;
record.memoryDynamicMax = vmSpec.getMaxRam();
record.memoryDynamicMin = vmSpec.getMinRam();
- record.memoryStaticMax = 8589934592L; //128GB
- record.memoryStaticMin = 134217728L; //128MB
+ Map<String, String> hostParams = new HashMap<String, String>();
+ hostParams = host.getLicenseParams(conn);
+ if (hostParams.get("restrict_dmc").equalsIgnoreCase("false")) {
+ record.memoryStaticMax = 8589934592L; //8GB
+ record.memoryStaticMin = 134217728L; //128MB
+ } else {
+ s_logger.warn("Host "+ _host.uuid + " does not support Dynamic Memory Control, so we cannot scale up the vm");
+ record.memoryStaticMax = vmSpec.getMaxRam();
+ record.memoryStaticMin = vmSpec.getMinRam();
+ }
+
if (guestOsTypeName.toLowerCase().contains("windows")) {
record.VCPUsMax = (long) vmSpec.getCpus();
} else {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
index 7392cb1..877e3bc 100644
--- a/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
+++ b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
@@ -110,7 +110,7 @@ public class CitrixResourceBaseTest {
@Test
public void testScaleVMF2() throws Types.XenAPIException, XmlRpcException {
- doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 536870912L);
+ doNothing().when(vm).setMemoryDynamicRange(conn, 536870912L, 536870912L);
doReturn(1).when(vmSpec).getCpus();
doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
doReturn(500).when(vmSpec).getSpeed();
@@ -129,12 +129,12 @@ public class CitrixResourceBaseTest {
@Test
public void testScaleVMF3() throws Types.XenAPIException, XmlRpcException {
- doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 536870912L);
+ doNothing().when(vm).setMemoryDynamicRange(conn, 536870912L, 536870912L);
doReturn(1).when(vmSpec).getCpus();
doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
doReturn(500).when(vmSpec).getSpeed();
doReturn(true).when(vmSpec).getLimitCpuUse();
- doNothing().when(vm).addToVCPUsParamsLive(conn, "cap", "100");
+ doReturn(null).when(_resource).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", "100", "vmname", "i-2-3-VM");
Map<String, String> args = (Map<String, String>)mock(HashMap.class);
when(host.callPlugin(conn, "vmops", "add_to_VCPUs_params_live", args)).thenReturn("Success");
doReturn(null).when(_resource).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", "i-2-3-VM");
@@ -143,6 +143,6 @@ public class CitrixResourceBaseTest {
verify(vmSpec, times(1)).getLimitCpuUse();
verify(_resource, times(1)).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", "i-2-3-VM");
- verify(vm, times(1)).addToVCPUsParamsLive(conn, "cap", "100");
+ verify(_resource, times(1)).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", "100", "vmname", "i-2-3-VM");
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh b/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
deleted file mode 100644
index 0fadcd8..0000000
--- a/scripts/vm/hypervisor/xenserver/Add-To-VCPUs-Params-Live.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-# 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.
-
-set -x
-
-vmname=$1
-key=$2
-value=$3
-uuid=`xe vm-list name-label=$vmname | grep uuid | awk '{print $NF}'`
-if [[ $key == "weight" ]]
-then
- xe vm-param-set VCPUs-params:weight=$value uuid=$uuid
-fi
-if [[ $key == "cap" ]]
-then
- xe vm-param-set VCPUs-params:cap=$value uuid=$uuid
-fi
-
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh b/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
new file mode 100644
index 0000000..0fadcd8
--- /dev/null
+++ b/scripts/vm/hypervisor/xenserver/add_to_vcpus_params_live.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# 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.
+
+set -x
+
+vmname=$1
+key=$2
+value=$3
+uuid=`xe vm-list name-label=$vmname | grep uuid | awk '{print $NF}'`
+if [[ $key == "weight" ]]
+then
+ xe vm-param-set VCPUs-params:weight=$value uuid=$uuid
+fi
+if [[ $key == "cap" ]]
+then
+ xe vm-param-set VCPUs-params:cap=$value uuid=$uuid
+fi
+
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/vmops
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops
index 60fb8ab..d18eca8 100755
--- a/scripts/vm/hypervisor/xenserver/vmops
+++ b/scripts/vm/hypervisor/xenserver/vmops
@@ -48,7 +48,7 @@ def add_to_VCPUs_params_live(session, args):
value = args['value']
vmname = args['vmname']
try:
- cmd = ["bash", "/opt/xensource/bin/Add-To-VCPUs-Params-Live.sh", vmname, key, value]
+ cmd = ["bash", "/opt/xensource/bin/add_to_vcpus_params_live.sh", vmname, key, value]
txt = util.pread2(cmd)
except:
return 'false'
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/xcpserver/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xcpserver/patch b/scripts/vm/hypervisor/xenserver/xcpserver/patch
index bfecd0c..a275df4 100644
--- a/scripts/vm/hypervisor/xenserver/xcpserver/patch
+++ b/scripts/vm/hypervisor/xenserver/xcpserver/patch
@@ -64,3 +64,4 @@ cloud-prepare-upgrade.sh=..,0755,/opt/xensource/bin
getRouterStatus.sh=../../../../network/domr/,0755,/opt/xensource/bin
bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
getDomRVersion.sh=../../../../network/domr/,0755,/opt/xensource/bin
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/xenserver56/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56/patch b/scripts/vm/hypervisor/xenserver/xenserver56/patch
index 1be14ea..5c4673d 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56/patch
@@ -65,4 +65,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
swift=..,0755,/opt/xensource/bin
swiftxen=..,0755,/etc/xapi.d/plugins
s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
index dd31e44..c7c58b9 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver56fp1/patch
@@ -64,4 +64,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
swift=..,0755,/opt/xensource/bin
swiftxen=..,0755,/etc/xapi.d/plugins
s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca0d2ef8/scripts/vm/hypervisor/xenserver/xenserver60/patch
----------------------------------------------------------------------
diff --git a/scripts/vm/hypervisor/xenserver/xenserver60/patch b/scripts/vm/hypervisor/xenserver/xenserver60/patch
index 787f474..6d81979 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver60/patch
+++ b/scripts/vm/hypervisor/xenserver/xenserver60/patch
@@ -69,4 +69,5 @@ bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
swift=..,0755,/opt/xensource/bin
swiftxen=..,0755,/etc/xapi.d/plugins
s3xen=..,0755,/etc/xapi.d/plugins
+add_to_vcpus_params_live.sh=..,0755,/opt/xensource/bin
[03/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2487: Show error while adding acl_item to default ACL
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2dc076f2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2dc076f2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2dc076f2
Branch: refs/heads/object_store
Commit: 2dc076f232181c7534f743c1dec7416c069f7066
Parents: b66c484
Author: Kishan Kavala <ki...@cloud.com>
Authored: Wed May 15 12:51:08 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:47 2013 -0700
----------------------------------------------------------------------
.../cloud/network/vpc/NetworkACLServiceImpl.java | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2dc076f2/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
index ac59fab..00c90d5 100644
--- a/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
+++ b/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
@@ -216,8 +216,8 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
throw new InvalidParameterValueException("Network ACL can be created just for networks of type " + Networks.TrafficType.Guest);
}
- if(aclId != NetworkACL.DEFAULT_DENY) {
- //ACL is not default DENY
+ if(aclId != NetworkACL.DEFAULT_DENY && aclId != NetworkACL.DEFAULT_ALLOW) {
+ //ACL is not default DENY/ALLOW
// ACL should be associated with a VPC
Vpc vpc = _vpcMgr.getVpc(acl.getVpcId());
if(vpc == null){
@@ -254,6 +254,10 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
throw new InvalidParameterValueException("Unable to find specified ACL");
}
+ if((aclId == NetworkACL.DEFAULT_DENY) || (aclId == NetworkACL.DEFAULT_ALLOW)){
+ throw new InvalidParameterValueException("Default ACL cannot be modified");
+ }
+
Vpc vpc = _vpcMgr.getVpc(acl.getVpcId());
if(vpc == null){
throw new InvalidParameterValueException("Unable to find Vpc associated with the NetworkACL");
[14/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2491:NTier: Creation of ACL Rule for protocol AH (51) and ESP (50) Fails
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cf1fada3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cf1fada3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cf1fada3
Branch: refs/heads/object_store
Commit: cf1fada372622fe610c18d17fdaf1589acc50d03
Parents: 7380670
Author: Pranav Saxena <pr...@citrix.com>
Authored: Wed May 15 18:01:10 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
ui/scripts/vpc.js | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cf1fada3/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index 5d436f3..0c4a446 100644
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@ -94,8 +94,8 @@
},
'protocolnumber': {label:'Protocol Number',isDisabled:true,isHidden:true,edit:true},
- 'startport': { edit: true, label: 'label.start.port' },
- 'endport': { edit: true, label: 'label.end.port' },
+ 'startport': { edit: true, label: 'label.start.port' , isOptional:true },
+ 'endport': { edit: true, label: 'label.end.port' , isOptional:true},
'networkid': {
label: 'Select Tier',
select: function(args) {
@@ -165,7 +165,18 @@
else
delete args.data.protocolnumber;
+
+ if((args.data.protocol == 'tcp' || args.data.protocol == 'udp' || args.data.protocol == 'all') && (args.data.startport=="" || args.data.startport == undefined)){
+ cloudStack.dialog.notice({message:_l('Start Port or End Port value should not be blank')});
+ $(window).trigger('cloudStack.fullRefresh');
+ }
+ else if((args.data.protocol == 'tcp' || args.data.protocol == 'udp' || args.data.protocol == 'all') && (args.data.endport=="" || args.data.endport == undefined)){
+ cloudStack.dialog.notice({message:_l('Start Port or End Port value should not be blank')});
+ $(window).trigger('cloudStack.fullRefresh');
+ }
+
+ else{
$.ajax({
url: createURL('createNetworkACL'),
data: $.extend(args.data, {
@@ -202,6 +213,7 @@
}
});
}
+ }
},
actions: {
destroy: {
[10/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
Midonet Plugin bugfixes
* Updated SQL upgrade scripts to include midonet configs.
* Fixed bug where default ICMP allow rule was missing
on static NAT creation, keeping VMs from being able
to ping the gateway.
* Changed the filter in the MidoNetElement callbacks to allow
calls when Midonet is configured.
Signed-off-by: Hugo Trippaers <ht...@schubergphilis.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/21cb2c67
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/21cb2c67
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/21cb2c67
Branch: refs/heads/object_store
Commit: 21cb2c67b200e0d5dc3bf0af75e44c5d1fe314bc
Parents: 56e8da7
Author: Joe Mills <jo...@midokura.jp>
Authored: Wed May 15 17:47:58 2013 +0900
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
.../com/cloud/network/element/MidoNetElement.java | 113 +++++++++------
.../network/guru/MidoNetGuestNetworkGuru.java | 13 ++-
.../network/guru/MidoNetPublicNetworkGuru.java | 9 +-
.../cloud/network/element/MidoNetElementTest.java | 31 +++--
setup/db/db/schema-410to420.sql | 2 +
5 files changed, 107 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21cb2c67/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java b/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
index d07fa56..ab6a6de 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
@@ -36,7 +36,6 @@ import com.cloud.network.NetworkModel;
import com.cloud.network.Networks;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
-import com.cloud.network.dao.NetworkServiceMapDao;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.PortForwardingRule;
import com.cloud.network.rules.StaticNat;
@@ -47,6 +46,8 @@ import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.component.PluggableService;
import com.cloud.utils.net.NetUtils;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
import com.cloud.vm.NicProfile;
import com.cloud.vm.NicVO;
import com.cloud.vm.ReservationContext;
@@ -131,14 +132,14 @@ public class MidoNetElement extends AdapterBase implements
@Inject
AccountManager _accountMgr;
@Inject
- NetworkServiceMapDao _ntwkSrvcDao;
+ AccountDao _accountDao;
public void setMidonetApi(MidonetApi api) {
this.api = api;
}
- public void setNtwkSrvcDao(NetworkServiceMapDao ntwkSrvcDao){
- this._ntwkSrvcDao = ntwkSrvcDao;
+ public void setAccountDao(AccountDao aDao) {
+ this._accountDao = aDao;
}
@Override
@@ -172,10 +173,13 @@ public class MidoNetElement extends AdapterBase implements
}
public boolean midoInNetwork(Network network) {
- for (String pname : _ntwkSrvcDao.getDistinctProviders(network.getId())) {
- if (pname.equals(getProvider().getName())) {
- return true;
- }
+ if((network.getTrafficType() == Networks.TrafficType.Public) &&
+ (network.getBroadcastDomainType() == Networks.BroadcastDomainType.Mido)){
+ return true;
+ }
+ if((network.getTrafficType() == Networks.TrafficType.Guest) &&
+ (network.getBroadcastDomainType() == Networks.BroadcastDomainType.Mido)){
+ return true;
}
return false;
}
@@ -280,6 +284,11 @@ public class MidoNetElement extends AdapterBase implements
post.addRule().type(DtoRule.RevDNAT).flowAction(DtoRule.Accept).create();
}
+ public String getAccountUuid(Network network) {
+ AccountVO acc = _accountDao.findById(network.getAccountId());
+ return acc.getUuid();
+ }
+
public boolean associatePublicIP(Network network, final List<? extends PublicIpAddress> ipAddress)
throws ResourceUnavailableException {
@@ -316,7 +325,7 @@ public class MidoNetElement extends AdapterBase implements
tenantUplink = ports[0];
providerDownlink = ports[1];
- accountIdStr = String.valueOf(network.getAccountId());
+ accountIdStr = getAccountUuid(network);
boolean isVpc = getIsVpc(network);
long id = getRouterId(network, isVpc);
routerName = getRouterName(isVpc, id);
@@ -611,7 +620,7 @@ public class MidoNetElement extends AdapterBase implements
RuleChain preNat = null;
RuleChain post = null;
- String accountIdStr = String.valueOf(network.getAccountId());
+ String accountIdStr = getAccountUuid(network);
String networkUUIDStr = String.valueOf(network.getId());
for (StaticNat rule : rules) {
@@ -659,7 +668,7 @@ public class MidoNetElement extends AdapterBase implements
return false;
}
if (canHandle(config, Service.Firewall)) {
- String accountIdStr = String.valueOf(config.getAccountId());
+ String accountIdStr = getAccountUuid(config);
String networkUUIDStr = String.valueOf(config.getId());
RuleChain preFilter = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PREFILTER);
RuleChain preNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PRENAT);
@@ -947,7 +956,7 @@ public class MidoNetElement extends AdapterBase implements
return false;
}
- String accountIdStr = String.valueOf(network.getAccountId());
+ String accountIdStr = getAccountUuid(network);
String networkUUIDStr = String.valueOf(network.getId());
RuleChain preNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_PRENAT);
RuleChain postNat = getChain(accountIdStr, networkUUIDStr, RuleChainCode.TR_POST);
@@ -1170,16 +1179,16 @@ public class MidoNetElement extends AdapterBase implements
return routerName + "-tenantrouter-" + chain;
}
- protected RuleChain getChain(String accountID, String routerName, RuleChainCode chainCode){
- return getChain("", accountID, routerName, chainCode);
+ protected RuleChain getChain(String accountUuid, String routerName, RuleChainCode chainCode){
+ return getChain("", accountUuid, routerName, chainCode);
}
- protected RuleChain getChain(String networkId, String accountID,
+ protected RuleChain getChain(String networkId, String accountUuid,
String routerName, RuleChainCode chainCode){
String chainName = getChainName(networkId, routerName, chainCode);
MultivaluedMap findChain = new MultivaluedMapImpl();
- findChain.add("tenant_id", accountID);
+ findChain.add("tenant_id", accountUuid);
ResourceCollection<RuleChain> ruleChains = api.getChains(findChain);
@@ -1303,7 +1312,7 @@ public class MidoNetElement extends AdapterBase implements
String routerName = getRouterName(isVpc, id);
RuleChain egressChain = getChain(String.valueOf(network.getId()),
- String.valueOf(network.getAccountId()),
+ getAccountUuid(network),
routerName,
RuleChainCode.ACL_EGRESS);
@@ -1325,7 +1334,7 @@ public class MidoNetElement extends AdapterBase implements
String routerName = getRouterName(isVpc, id);
RuleChain egressChain = getChain(String.valueOf(network.getId()),
- String.valueOf(network.getAccountId()),
+ getAccountUuid(network),
routerName,
RuleChainCode.ACL_EGRESS);
@@ -1355,6 +1364,14 @@ public class MidoNetElement extends AdapterBase implements
.position(pos++)
.create();
+ // If it is ICMP to the router, accept that
+ egressChain.addRule().type(DtoRule.Accept)
+ .nwProto(SimpleFirewallRule.stringToProtocolNumber("icmp"))
+ .nwDstAddress(network.getGateway())
+ .nwDstLength(32)
+ .position(pos++)
+ .create();
+
// Everything else gets dropped
egressChain.addRule()
.type(DtoRule.Drop)
@@ -1369,7 +1386,7 @@ public class MidoNetElement extends AdapterBase implements
boolean isVpc = getIsVpc(network);
long id = getRouterId(network, isVpc);
String routerName = getRouterName(isVpc, id);
- String accountIdStr = String.valueOf(network.getAccountId());
+ String accountIdStr = getAccountUuid(network);
// Add interior port on bridge side
BridgePort bridgePort = netBridge.addInteriorPort().create();
@@ -1406,6 +1423,14 @@ public class MidoNetElement extends AdapterBase implements
.position(pos++)
.create();
+ // If it is ICMP to the router, accept that
+ inc.addRule().type(DtoRule.Accept)
+ .nwProto(SimpleFirewallRule.stringToProtocolNumber("icmp"))
+ .nwDstAddress(network.getGateway())
+ .nwDstLength(32)
+ .position(pos++)
+ .create();
+
// If it is connection tracked, accept that as well
inc.addRule().type(DtoRule.Accept)
.matchReturnFlow(true)
@@ -1449,27 +1474,25 @@ public class MidoNetElement extends AdapterBase implements
private Bridge getOrCreateNetworkBridge(Network network){
// Find the single bridge for this network, create if doesn't exist
- return getOrCreateNetworkBridge(network.getId(), network.getAccountId());
+ return getOrCreateNetworkBridge(network.getId(), getAccountUuid(network));
}
- private Bridge getOrCreateNetworkBridge(long networkID, long accountID){
- Bridge netBridge = getNetworkBridge(networkID, accountID);
+ private Bridge getOrCreateNetworkBridge(long networkID, String accountUuid){
+ Bridge netBridge = getNetworkBridge(networkID, accountUuid);
if(netBridge == null){
- String accountIdStr = String.valueOf(accountID);
String networkUUIDStr = String.valueOf(networkID);
- netBridge = api.addBridge().tenantId(accountIdStr).name(networkUUIDStr).create();
+ netBridge = api.addBridge().tenantId(accountUuid).name(networkUUIDStr).create();
}
return netBridge;
}
- private Bridge getNetworkBridge(long networkID, long accountID){
+ private Bridge getNetworkBridge(long networkID, String accountUuid){
MultivaluedMap qNetBridge = new MultivaluedMapImpl();
- String accountIdStr = String.valueOf(accountID);
String networkUUIDStr = String.valueOf(networkID);
- qNetBridge.add("tenant_id", accountIdStr);
+ qNetBridge.add("tenant_id", accountUuid);
for (Bridge b : this. api.getBridges(qNetBridge)) {
if(b.getName().equals(networkUUIDStr)){
@@ -1497,7 +1520,7 @@ public class MidoNetElement extends AdapterBase implements
boolean isVpc = getIsVpc(network);
long id = getRouterId(network, isVpc);
- return getOrCreateGuestNetworkRouter(id, network.getAccountId(), isVpc);
+ return getOrCreateGuestNetworkRouter(id, getAccountUuid(network), isVpc);
}
@@ -1509,29 +1532,28 @@ public class MidoNetElement extends AdapterBase implements
}
}
- protected Router createRouter(long id, long accountID, boolean isVpc) {
+ protected Router createRouter(long id, String accountUuid, boolean isVpc) {
- String accountIdStr = String.valueOf(accountID);
String routerName = getRouterName(isVpc, id);
//Set up rule chains
RuleChain pre = api.addChain()
.name(getChainName(routerName, RuleChainCode.TR_PRE))
- .tenantId(accountIdStr)
+ .tenantId(accountUuid)
.create();
RuleChain post = api.addChain()
.name(getChainName(routerName, RuleChainCode.TR_POST))
- .tenantId(accountIdStr)
+ .tenantId(accountUuid)
.create();
// Set up NAT and filter chains for pre-routing
RuleChain preFilter = api.addChain()
.name(getChainName(routerName, RuleChainCode.TR_PREFILTER))
- .tenantId(accountIdStr)
+ .tenantId(accountUuid)
.create();
RuleChain preNat = api.addChain()
.name(getChainName(routerName, RuleChainCode.TR_PRENAT))
- .tenantId(accountIdStr)
+ .tenantId(accountUuid)
.create();
// Hook the chains in - first jump to Filter chain, then jump to Nat chain
@@ -1545,28 +1567,27 @@ public class MidoNetElement extends AdapterBase implements
.create();
return api.addRouter()
- .tenantId(accountIdStr)
+ .tenantId(accountUuid)
.name(routerName)
.inboundFilterId(pre.getId())
.outboundFilterId(post.getId())
.create();
}
- private Router getOrCreateGuestNetworkRouter(long id, long accountID, boolean isVpc) {
- Router tenantRouter = getGuestNetworkRouter(id, accountID, isVpc);
+ private Router getOrCreateGuestNetworkRouter(long id, String accountUuid, boolean isVpc) {
+ Router tenantRouter = getGuestNetworkRouter(id, accountUuid, isVpc);
if(tenantRouter == null){
- tenantRouter = createRouter(id, accountID, isVpc);
+ tenantRouter = createRouter(id, accountUuid, isVpc);
}
return tenantRouter;
}
- private Router getGuestNetworkRouter(long id, long accountID, boolean isVpc){
+ private Router getGuestNetworkRouter(long id, String accountUuid, boolean isVpc){
MultivaluedMap qNetRouter = new MultivaluedMapImpl();
- String accountIdStr = String.valueOf(accountID);
String routerName = getRouterName(isVpc, id);
- qNetRouter.add("tenant_id", accountIdStr);
+ qNetRouter.add("tenant_id", accountUuid);
for (Router router : api.getRouters(qNetRouter)) {
if(router.getName().equals(routerName)){
@@ -1613,10 +1634,10 @@ public class MidoNetElement extends AdapterBase implements
}
private void deleteNetworkBridges(Network network){
- long accountID = network.getAccountId();
+ String accountUuid = getAccountUuid(network);
long networkID = network.getId();
- Bridge netBridge = getNetworkBridge(networkID, accountID);
+ Bridge netBridge = getNetworkBridge(networkID, accountUuid);
if(netBridge != null){
cleanBridge(netBridge);
@@ -1632,11 +1653,11 @@ public class MidoNetElement extends AdapterBase implements
}
private void deleteGuestNetworkRouters(Network network){
- long accountID = network.getAccountId();
+ String accountUuid = getAccountUuid(network);
boolean isVpc = getIsVpc(network);
long id = getRouterId(network, isVpc);
- Router tenantRouter = getGuestNetworkRouter(id, accountID, isVpc);
+ Router tenantRouter = getGuestNetworkRouter(id, accountUuid, isVpc);
// Delete any peer ports corresponding to this router
for(Port peerPort : tenantRouter.getPeerPorts((new MultivaluedMapImpl()))){
@@ -1677,7 +1698,7 @@ public class MidoNetElement extends AdapterBase implements
}
// Remove inbound and outbound filter chains
- String accountIdStr = String.valueOf(accountID);
+ String accountIdStr = String.valueOf(accountUuid);
String routerName = getRouterName(isVpc, id);
RuleChain pre = api.getChain(tenantRouter.getInboundFilterId());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21cb2c67/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
index 20b74b9..d57affc 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
@@ -30,6 +30,8 @@ import com.cloud.network.*;
import com.cloud.network.PhysicalNetwork;
import com.cloud.offering.NetworkOffering;
import com.cloud.user.Account;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
import com.cloud.vm.*;
import com.midokura.midonet.client.resource.Bridge;
import com.cloud.utils.net.NetUtils;
@@ -46,12 +48,16 @@ import com.cloud.vm.Nic.ReservationStrategy;
import javax.ejb.Local;
import java.util.UUID;
+import javax.inject.Inject;
@Component
@Local(value = NetworkGuru.class)
public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
private static final Logger s_logger = Logger.getLogger(MidoNetGuestNetworkGuru.class);
+ @Inject
+ AccountDao _accountDao;
+
public MidoNetGuestNetworkGuru() {
super();
_isolationMethods = new PhysicalNetwork.IsolationMethod[] { PhysicalNetwork.IsolationMethod.MIDO };
@@ -118,7 +124,8 @@ public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
implemented.setCidr(network.getCidr());
}
- String accountIdStr = String.valueOf(network.getAccountId());
+ AccountVO acc = _accountDao.findById(network.getAccountId());
+ String accountUUIDStr = acc.getUuid();
String routerName = "";
if (network.getVpcId() != null) {
routerName = "VPC" + String.valueOf(network.getVpcId());
@@ -126,7 +133,9 @@ public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
routerName = String.valueOf(network.getId());
}
- String broadcastUriStr = accountIdStr + "." + String.valueOf(network.getId()) + ":" + routerName;
+ String broadcastUriStr = accountUUIDStr + "."
+ + String.valueOf(network.getId())
+ + ":" + routerName;
implemented.setBroadcastUri(Networks.BroadcastDomainType.Mido.toUri(broadcastUriStr));
s_logger.debug("Broadcast URI set to " + broadcastUriStr);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21cb2c67/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
index 7e93edb..1daf0ba 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
@@ -34,6 +34,8 @@ 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 com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
import com.cloud.network.dao.NetworkVO;
import com.cloud.network.dao.IPAddressVO;
import com.cloud.vm.*;
@@ -50,6 +52,8 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
// Inject any stuff we need to use (DAOs etc)
@Inject
NetworkModel _networkModel;
+ @Inject
+ AccountDao _accountDao;
// Don't need to change traffic type stuff, public is fine
@@ -228,9 +232,10 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
}
private URI generateBroadcastUri(Network network){
- String accountIdStr = String.valueOf(network.getAccountId());
+ AccountVO acc = _accountDao.findById(network.getAccountId());
+ String accountUUIDStr = acc.getUuid();
String networkUUIDStr = String.valueOf(network.getId());
- return Networks.BroadcastDomainType.Mido.toUri(accountIdStr +
+ return Networks.BroadcastDomainType.Mido.toUri(accountUUIDStr +
"." +
networkUUIDStr +
":" +
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21cb2c67/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
index aec9c2d..baf99b9 100644
--- a/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
+++ b/plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
@@ -18,12 +18,13 @@
*/
import com.cloud.network.element.MidoNetElement;
+import com.cloud.user.AccountVO;
+import com.cloud.user.dao.AccountDao;
import junit.framework.TestCase;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
import com.midokura.midonet.client.MidonetApi;
import com.midokura.midonet.client.resource.*;
-import com.cloud.network.dao.NetworkServiceMapDao;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import com.cloud.network.*;
import com.cloud.vm.*;
@@ -46,10 +47,6 @@ public class MidoNetElementTest extends TestCase {
//mockMgmt
MidonetApi api = mock(MidonetApi.class, RETURNS_DEEP_STUBS);
- ArrayList<String> arr = new ArrayList<String>();
- arr.add("MidoNet");
- NetworkServiceMapDao mockNSMD = mock(NetworkServiceMapDao.class);
- when(mockNSMD.getDistinctProviders(anyLong())).thenReturn(arr);
//mockDhcpHost
DhcpHost mockDhcpHost = mock(DhcpHost.class);
@@ -82,6 +79,14 @@ public class MidoNetElementTest extends TestCase {
when(mockNetwork.getGateway()).thenReturn("1.2.3.4");
when(mockNetwork.getCidr()).thenReturn("1.2.3.0/24");
when(mockNetwork.getId()).thenReturn((long)2);
+ when(mockNetwork.getBroadcastDomainType()).thenReturn(Networks.BroadcastDomainType.Mido);
+ when(mockNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Guest);
+
+ //mockAccountDao
+ AccountDao mockAccountDao = mock(AccountDao.class);
+ AccountVO mockAccountVO = mock(AccountVO.class);
+ when(mockAccountDao.findById(anyLong())).thenReturn(mockAccountVO);
+ when(mockAccountVO.getUuid()).thenReturn("1");
//mockNic
NicProfile mockNic = mock(NicProfile.class);
@@ -96,8 +101,8 @@ public class MidoNetElementTest extends TestCase {
when(mockVm.getType()).thenReturn(VirtualMachine.Type.User);
MidoNetElement elem = new MidoNetElement();
- elem.setNtwkSrvcDao(mockNSMD);
elem.setMidonetApi(api);
+ elem.setAccountDao(mockAccountDao);
boolean result = false;
try {
@@ -119,14 +124,16 @@ public class MidoNetElementTest extends TestCase {
public void testImplement() {
//mock
MidonetApi api = mock(MidonetApi.class, RETURNS_DEEP_STUBS);
- ArrayList<String> arr = new ArrayList<String>();
- arr.add("MidoNet");
- NetworkServiceMapDao mockNSMD = mock(NetworkServiceMapDao.class);
- when(mockNSMD.getDistinctProviders(anyLong())).thenReturn(arr);
+ //mockAccountDao
+ AccountDao mockAccountDao = mock(AccountDao.class);
+ AccountVO mockAccountVO = mock(AccountVO.class);
+ when(mockAccountDao.findById(anyLong())).thenReturn(mockAccountVO);
+ when(mockAccountVO.getUuid()).thenReturn("1");
MidoNetElement elem = new MidoNetElement();
- elem.setNtwkSrvcDao(mockNSMD);
+
elem.setMidonetApi(api);
+ elem.setAccountDao(mockAccountDao);
//mockRPort
RouterPort mockRPort = mock(RouterPort.class);
@@ -161,6 +168,8 @@ public class MidoNetElementTest extends TestCase {
when(mockNetwork.getGateway()).thenReturn("1.2.3.4");
when(mockNetwork.getCidr()).thenReturn("1.2.3.0/24");
when(mockNetwork.getId()).thenReturn((long)2);
+ when(mockNetwork.getBroadcastDomainType()).thenReturn(Networks.BroadcastDomainType.Mido);
+ when(mockNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Public);
boolean result = false;
try {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21cb2c67/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index 3b259d8..d9ed7a7 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -29,6 +29,8 @@ INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled, max_hosts_per_cluster) VALUES ('VMware', '5.1', 128, 0, 32);
DELETE FROM `cloud`.`configuration` where name='vmware.percluster.host.max';
INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'AgentManager', 'xen.nics.max', '7', 'Maximum allowed nics for Vms created on Xen');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'midonet.apiserver.address', 'http://localhost:8081', 'Specify the address at which the Midonet API server can be contacted (if using Midonet)');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'midonet.providerrouter.id', 'd7c5e6a3-e2f4-426b-b728-b7ce6a0448e5', 'Specifies the UUID of the Midonet provider router (if using Midonet)');
ALTER TABLE `cloud`.`load_balancer_vm_map` ADD state VARCHAR(40) NULL COMMENT 'service status updated by LB healthcheck manager';
alter table storage_pool change storage_provider_id storage_provider_name varchar(255);
[15/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
Summary: Use hypervisor as clock source for system vms
BUG-ID: CLOUDSTACK-2492
Bugfix-for: 4.1,master
Signed-off-by: Marcus Sorensen <ma...@betterservers.com> 1368635782 -0600
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/20a9d877
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/20a9d877
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/20a9d877
Branch: refs/heads/object_store
Commit: 20a9d877cf2211abf99c2502601e024a47f22114
Parents: 3fa8fda
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Wed May 15 10:36:22 2013 -0600
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:50 2013 -0700
----------------------------------------------------------------------
.../kvm/resource/LibvirtComputingResource.java | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/20a9d877/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index b3e9be1..15d3d58 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -3146,6 +3146,8 @@ ServerResource {
if (vmTO.getOs().startsWith("Windows")) {
clock.setClockOffset(ClockDef.ClockOffset.LOCALTIME);
clock.setTimer("rtc", "catchup", null);
+ } else if (vmTO.getType() != VirtualMachine.Type.User) {
+ clock.setTimer("kvmclock", "catchup", null);
}
vm.addComp(clock);
[07/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK:685 Fix user stat collection in PrepareStop part of VirtualNetworkApplianceImpl
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1f5ae4ba
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1f5ae4ba
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1f5ae4ba
Branch: refs/heads/object_store
Commit: 1f5ae4bae38d0e13d564f0c1f072404152568940
Parents: ca0d2ef
Author: Wei Zhou <w....@leaseweb.com>
Authored: Wed May 15 15:53:36 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:48 2013 -0700
----------------------------------------------------------------------
.../router/VirtualNetworkApplianceManagerImpl.java | 33 ++++++++-------
1 files changed, 18 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1f5ae4ba/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 7bbdba6..5de2388 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3889,26 +3889,29 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
String privateIP = router.getPrivateIpAddress();
if (privateIP != null) {
+ boolean forVpc = router.getVpcId() != null;
List<? extends Nic> routerNics = _nicDao.listByVmId(router.getId());
for (Nic routerNic : routerNics) {
Network network = _networkModel.getNetwork(routerNic.getNetworkId());
- if (network.getTrafficType() == TrafficType.Public) {
- boolean forVpc = router.getVpcId() != null;
+ //Send network usage command for public nic in 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());
+ String routerType = router.getType().toString();
UserStatisticsVO previousStats = _userStatsDao.findBy(router.getAccountId(),
- router.getDataCenterId(), network.getId(), null, router.getId(), router.getType().toString());
+ router.getDataCenterId(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
NetworkUsageAnswer answer = null;
try {
answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), usageCmd);
} catch (Exception e) {
- s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId(), e);
+ s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId(), e);
continue;
}
if (answer != null) {
if (!answer.getResult()) {
- s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId() + "; details: " + answer.getDetails());
+ s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId() + "; details: " + answer.getDetails());
continue;
}
Transaction txn = Transaction.open(Transaction.CLOUD_DB);
@@ -3919,26 +3922,26 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
}
txn.start();
UserStatisticsVO stats = _userStatsDao.lock(router.getAccountId(),
- router.getDataCenterId(), network.getId(), null, router.getId(), router.getType().toString());
+ router.getDataCenterId(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
if (stats == null) {
s_logger.warn("unable to find stats for account: " + router.getAccountId());
continue;
}
- if(previousStats != null
- && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived())
- || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
+ if (previousStats != null
+ && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived())
+ || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
s_logger.debug("Router stats changed from the time NetworkUsageCommand was sent. " +
- "Ignoring current answer. Router: "+answer.getRouterName()+" Rcvd: " +
- answer.getBytesReceived()+ "Sent: " +answer.getBytesSent());
+ "Ignoring current answer. Router: " + answer.getRouterName() + " Rcvd: " +
+ answer.getBytesReceived() + "Sent: " + answer.getBytesSent());
continue;
}
if (stats.getCurrentBytesReceived() > answer.getBytesReceived()) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Received # of bytes that's less than the last one. " +
- "Assuming something went wrong and persisting it. Router: " +
- answer.getRouterName()+" Reported: " + answer.getBytesReceived()
+ "Assuming something went wrong and persisting it. Router: " +
+ answer.getRouterName() + " Reported: " + answer.getBytesReceived()
+ " Stored: " + stats.getCurrentBytesReceived());
}
stats.setNetBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
@@ -3947,8 +3950,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
if (stats.getCurrentBytesSent() > answer.getBytesSent()) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Received # of bytes that's less than the last one. " +
- "Assuming something went wrong and persisting it. Router: " +
- answer.getRouterName()+" Reported: " + answer.getBytesSent()
+ "Assuming something went wrong and persisting it. Router: " +
+ answer.getRouterName() + " Reported: " + answer.getBytesSent()
+ " Stored: " + stats.getCurrentBytesSent());
}
stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
[06/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
don't let requests logs
requests logs to the logger making it hard to distinguish marvin logs
from http logs.
Signed-off-by: Prasanna Santhanam <ts...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/50eeae81
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/50eeae81
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/50eeae81
Branch: refs/heads/object_store
Commit: 50eeae81da0a9d88479ece5e6c0d74449e26cd93
Parents: 4c9ca2b
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Wed May 15 14:51:37 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:48 2013 -0700
----------------------------------------------------------------------
tools/marvin/marvin/cloudstackConnection.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50eeae81/tools/marvin/marvin/cloudstackConnection.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/cloudstackConnection.py b/tools/marvin/marvin/cloudstackConnection.py
index 8039117..b5ff5bf 100644
--- a/tools/marvin/marvin/cloudstackConnection.py
+++ b/tools/marvin/marvin/cloudstackConnection.py
@@ -20,6 +20,7 @@ import urllib
import base64
import hmac
import hashlib
+import logging
import time
import cloudstackException
from cloudstackAPI import *
@@ -37,6 +38,7 @@ class cloudConnection(object):
apiKey=None, securityKey=None,
asyncTimeout=3600, logging=None, scheme='http',
path='client/api'):
+ self.loglevel() #Turn off requests logs
self.apiKey = apiKey
self.securityKey = securityKey
self.mgtSvr = mgtSvr
@@ -65,6 +67,13 @@ class cloudConnection(object):
self.asyncTimeout, self.logging, self.protocol,
self.path)
+ def loglevel(self, lvl=logging.WARNING):
+ """
+ Turns off the INFO/DEBUG logs from `requests`
+ """
+ requests_log = logging.getLogger("requests")
+ requests_log.setLevel(lvl)
+
def poll(self, jobid, response):
"""
polls the completion of a given jobid
[18/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-747: internalLb in VPC - UI - create tier dialog - only one tier is allowed to have PublicLb in a VPC.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3bf10505
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3bf10505
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3bf10505
Branch: refs/heads/object_store
Commit: 3bf10505b83d65040c1ce7b163a72413826dd71d
Parents: 9240095
Author: Jessica Wang <je...@apache.org>
Authored: Wed May 15 11:01:43 2013 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:50 2013 -0700
----------------------------------------------------------------------
ui/scripts/sharedFunctions.js | 36 ++++++++++++------------------------
ui/scripts/vpc.js | 9 +++++----
2 files changed, 17 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3bf10505/ui/scripts/sharedFunctions.js
----------------------------------------------------------------------
diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js
index a018406..0352990 100644
--- a/ui/scripts/sharedFunctions.js
+++ b/ui/scripts/sharedFunctions.js
@@ -122,34 +122,22 @@ function createURL(apiName, options) {
return urlString;
}
-/*
-function fromdb(val) {
- return sanitizeXSS(noNull(val));
-}
-*/
-
function todb(val) {
return encodeURIComponent(val);
}
-/*
-function noNull(val) {
- if(val == null)
- return "";
- else
- return val;
-}
-*/
-
-/*
-function sanitizeXSS(val) { // Prevent cross-site-script(XSS) attack
- if(val == null || typeof(val) != "string")
- return val;
- val = val.replace(/</g, "<"); //replace < whose unicode is \u003c
- val = val.replace(/>/g, ">"); //replace > whose unicode is \u003e
- return unescape(val);
-}
-*/
+//LB provider map
+var lbProviderMap = {
+ "publicLb": {
+ "non-vpc": ["VirtualRouter", "Netscaler", "F5"],
+ "vpc": ["VpcVirtualRouter", "Netscaler"]
+ },
+ "internalLb": {
+ "non-vpc": [],
+ "vpc": ["InternalLbVm"]
+ }
+};
+
// Role Functions
function isAdmin() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3bf10505/ui/scripts/vpc.js
----------------------------------------------------------------------
diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js
index 0c4a446..4890dcc 100644
--- a/ui/scripts/vpc.js
+++ b/ui/scripts/vpc.js
@@ -2344,15 +2344,16 @@
var items;
if(networkSupportingLbExists == true) {
items = $.grep(networkOfferings, function(networkOffering) {
- var includingLbService = false;
+ var includingPublicLbService = false;
$(networkOffering.service).each(function(){
var thisService = this;
- if(thisService.name == "Lb") {
- includingLbService = true;
+ //only one tier is allowed to have PublicLb provider in a VPC
+ if(thisService.name == "Lb" && lbProviderMap.publicLb.vpc.indexOf(thisService.provider[0].name) != -1) {
+ includingPublicLbService = true;
return false; //break $.each() loop
}
});
- return !includingLbService;
+ return !includingPublicLbService;
});
}
else {
[09/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-962: Because of the same reason to this (CLOUDSTACK-685)
https://reviews.apache.org/r/11157/
Signed-off-by: Chip Childers <ch...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3fa8fda3
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3fa8fda3
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3fa8fda3
Branch: refs/heads/object_store
Commit: 3fa8fda37c8b9fac1e38b57d28d23917106fe02b
Parents: 21cb2c6
Author: Wei Zhou <w....@leaseweb.com>
Authored: Wed May 15 15:54:03 2013 +0100
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
.../router/VirtualNetworkApplianceManagerImpl.java | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3fa8fda3/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 5de2388..b8ad29f 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3957,6 +3957,11 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
}
stats.setCurrentBytesSent(answer.getBytesSent());
+ if (! _dailyOrHourly) {
+ //update agg bytes
+ stats.setAggBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());
+ stats.setAggBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
+ }
_userStatsDao.update(stats.getId(), stats);
txn.commit();
} catch (Exception e) {
[17/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2482: fix create volume from snapshot
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c476d786
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c476d786
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c476d786
Branch: refs/heads/object_store
Commit: c476d7866ec648c648adbe30ddae07fb804e5548
Parents: 3bf1050
Author: Edison Su <su...@gmail.com>
Authored: Wed May 15 19:41:21 2013 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:50 2013 -0700
----------------------------------------------------------------------
.../storage/volume/VolumeServiceImpl.java | 4 ++--
.../ElementChildTestConfiguration.java | 2 +-
.../internallbvmmgr/LbChildTestConfiguration.java | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c476d786/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 48160f4..ba4693c 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -507,7 +507,7 @@ public class VolumeServiceImpl implements VolumeService {
try {
DataObject volumeOnStore = store.create(volume);
- volume.processEvent(Event.CreateOnlyRequested);
+ volumeOnStore.processEvent(Event.CreateOnlyRequested);
snapshot.processEvent(Event.CopyingRequested);
CreateVolumeFromBaseImageContext<VolumeApiResult> context = new CreateVolumeFromBaseImageContext<VolumeApiResult>(null,
volume, store, volumeOnStore, future, snapshot);
@@ -528,7 +528,7 @@ public class VolumeServiceImpl implements VolumeService {
protected Void createVolumeFromSnapshotCallback(AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> callback,
CreateVolumeFromBaseImageContext<VolumeApiResult> context) {
CopyCommandResult result = callback.getResult();
- VolumeInfo volume = (VolumeInfo)context.vo;
+ VolumeInfo volume = (VolumeInfo)context.templateOnStore;
SnapshotInfo snapshot = context.snapshot;
VolumeApiResult apiResult = new VolumeApiResult(volume);
Event event = null;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c476d786/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbelement/ElementChildTestConfiguration.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbelement/ElementChildTestConfiguration.java b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbelement/ElementChildTestConfiguration.java
index 8a67e84..bddf713 100644
--- a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbelement/ElementChildTestConfiguration.java
+++ b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbelement/ElementChildTestConfiguration.java
@@ -46,7 +46,7 @@ import com.cloud.vm.dao.DomainRouterDao;
@Configuration
@ComponentScan(
basePackageClasses={
- NetUtils.class,
+ NetUtils.class
},
includeFilters={@Filter(value=ElementChildTestConfiguration.Library.class, type=FilterType.CUSTOM)},
useDefaultFilters=false
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c476d786/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/LbChildTestConfiguration.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/LbChildTestConfiguration.java b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/LbChildTestConfiguration.java
index 74e54b2..4f03b27 100644
--- a/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/LbChildTestConfiguration.java
+++ b/plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/LbChildTestConfiguration.java
@@ -56,7 +56,7 @@ import com.cloud.user.dao.AccountDao;
@Configuration
@ComponentScan(
basePackageClasses={
- NetUtils.class,
+ NetUtils.class
},
includeFilters={@Filter(value=LbChildTestConfiguration.Library.class, type=FilterType.CUSTOM)},
useDefaultFilters=false
[02/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
Updated network acl service test to avoid default ACL modification
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c75b1894
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c75b1894
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c75b1894
Branch: refs/heads/object_store
Commit: c75b1894bca727784a1f371252bd3841ec6250e2
Parents: 2dc076f
Author: Kishan Kavala <ki...@cloud.com>
Authored: Wed May 15 14:20:29 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:47 2013 -0700
----------------------------------------------------------------------
.../test/com/cloud/vpc/NetworkACLServiceTest.java | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c75b1894/server/test/com/cloud/vpc/NetworkACLServiceTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/NetworkACLServiceTest.java b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
index 7cc7200..9a368b9 100644
--- a/server/test/com/cloud/vpc/NetworkACLServiceTest.java
+++ b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
@@ -83,7 +83,7 @@ public class NetworkACLServiceTest extends TestCase{
createACLItemCmd = new CreateNetworkACLCmd(){
@Override
public Long getACLId(){
- return 1L;
+ return 3L;
}
@Override
[11/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2515: Verify if the targetPath isn't null before comparing
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/73806707
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/73806707
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/73806707
Branch: refs/heads/object_store
Commit: 738067077a184aa355005b53979be6c397920f82
Parents: 8578953
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Wed May 15 13:57:58 2013 +0200
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
.../kvm/storage/LibvirtStorageAdaptor.java | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73806707/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index 8f58719..e7e4bbf 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -465,7 +465,8 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
StoragePool p = conn.storagePoolLookupByName(poolname);
LibvirtStoragePoolDef pdef = getStoragePoolDef(conn, p);
- if (pdef.getTargetPath().equals(path)) {
+ String targetPath = pdef.getTargetPath();
+ if (targetPath != null && targetPath.equals(path)) {
s_logger.debug("Storage pool utilizing path '" + path + "' already exists as pool "
+ poolname + ", undefining so we can re-define with correct name " + name);
if (p.isPersistent() == 1) {
[08/18] git commit: updated refs/heads/object_store to c476d78
Posted by ed...@apache.org.
CLOUDSTACK-2134 updated acl checks for aquiring nic secondary ip
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/56e8da78
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/56e8da78
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/56e8da78
Branch: refs/heads/object_store
Commit: 56e8da7890268aedf4187b66cfbaeba477591435
Parents: fd354db
Author: Jayapal <ja...@citrix.com>
Authored: Thu Apr 25 12:56:38 2013 +0530
Committer: Edison Su <su...@gmail.com>
Committed: Wed May 15 19:41:49 2013 -0700
----------------------------------------------------------------------
.../src/com/cloud/network/NetworkServiceImpl.java | 49 ++++++++-------
1 files changed, 27 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/56e8da78/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index d3ef320..5f51a30 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -610,18 +610,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new InvalidParameterValueException("Invalid network id is given");
}
- Network network = _networksDao.findById(networkId);
- if (network == null) {
- throw new InvalidParameterValueException("Invalid network id is given");
- }
- accountId = network.getAccountId();
- domainId = network.getDomainId();
-
- // Validate network offering
- NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
-
- // verify permissions
- _accountMgr.checkAccess(ipOwner, null, true, network);
+ Account caller = UserContext.current().getCaller();
//check whether the nic belongs to user vm.
NicVO nicVO = _nicDao.findById(nicId);
@@ -633,6 +622,25 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new InvalidParameterValueException("The nic is not belongs to user vm");
}
+ Nic nic = _nicDao.findById(nicId);
+ VirtualMachine vm = _userVmDao.findById(nicVO.getInstanceId());
+ if (vm == null) {
+ throw new InvalidParameterValueException("There is no vm with the nic");
+ }
+ // verify permissions
+ _accountMgr.checkAccess(ipOwner, null, true, vm);
+
+
+ Network network = _networksDao.findById(networkId);
+ if (network == null) {
+ throw new InvalidParameterValueException("Invalid network id is given");
+ }
+ accountId = network.getAccountId();
+ domainId = network.getDomainId();
+
+ // Validate network offering
+ NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
+
DataCenter dc = _dcDao.findById(network.getDataCenterId());
Long id = nicVO.getInstanceId();
@@ -649,14 +657,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new InvalidParameterValueException("Allocating guest ip for nic failed");
}
} else if (dc.getNetworkType() == NetworkType.Basic || ntwkOff.getGuestType() == Network.GuestType.Shared) {
- Account caller = UserContext.current().getCaller();
- long callerUserId = UserContext.current().getCallerUserId();
- _accountMgr.checkAccess(caller, SecurityChecker.AccessType.UseNetwork, false, network);
//handle the basic networks here
- VirtualMachine vm = _userVmDao.findById(nicVO.getInstanceId());
- if (vm == null) {
- throw new InvalidParameterValueException("There is no vm with the nic");
- }
VMInstanceVO vmi = (VMInstanceVO)vm;
Long podId = vmi.getPodIdToDeployIn();
if (podId == null) {
@@ -718,6 +719,13 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new InvalidParameterValueException("Unable to find ip address by id");
}
+ VirtualMachine vm = _userVmDao.findById(secIpVO.getVmId());
+ if (vm == null) {
+ throw new InvalidParameterValueException("There is no vm with the nic");
+ }
+ // verify permissions
+ _accountMgr.checkAccess(caller, null, true, vm);
+
Network network = _networksDao.findById(secIpVO.getNetworkId());
if (network == null) {
@@ -727,9 +735,6 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
// Validate network offering
NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
- // verify permissions
- _accountMgr.checkAccess(caller, null, true, network);
-
Long nicId = secIpVO.getNicId();
s_logger.debug("ip id = " + ipAddressId + " nic id = " + nicId);
//check is this the last secondary ip for NIC