You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/18 05:07:14 UTC
[49/50] [abbrv] Merge from master
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index ab66bb0,8da5176..81eebe4
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@@ -3168,9 -3185,16 +3178,16 @@@ public class VirtualNetworkApplianceMan
String vlanId = ipAddr.getVlanTag();
String vlanGateway = ipAddr.getGateway();
String vlanNetmask = ipAddr.getNetmask();
- String vifMacAddress = ipAddr.getMacAddress();
+ String vifMacAddress = null;
+ // For non-source nat IP, set the mac to be something based on first public nic's MAC
+ // We cannot depends on first ip because we need to deal with first ip of other nics
+ if (!ipAddr.isSourceNat() && ipAddr.getVlanId() != 0) {
+ vifMacAddress = NetUtils.generateMacOnIncrease(baseMac, ipAddr.getVlanId());
+ } else {
+ vifMacAddress = ipAddr.getMacAddress();
+ }
- IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP,
+ IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP,
sourceNat, vlanId, vlanGateway, vlanNetmask, vifMacAddress, networkRate, ipAddr.isOneToOneNat());
ip.setTrafficType(network.getTrafficType());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/network/rules/RulesManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/network/vpc/NetworkACLServiceImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/server/ManagementServerImpl.java
index 52d573d,dea761d..2c20bc6
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@@ -965,32 -1006,12 +968,12 @@@ public class ManagementServerImpl exten
Object hypervisorType = cmd.getHypervisorType();
Object clusterType = cmd.getClusterType();
Object allocationState = cmd.getAllocationState();
- String zoneType = cmd.getZoneType();
String keyword = cmd.getKeyword();
- zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId);
--
-
- Filter searchFilter = new Filter(ClusterVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
-
- SearchBuilder<ClusterVO> sb = _clusterDao.createSearchBuilder();
- sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
- sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
- sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
- sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
- sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.EQ);
- sb.and("clusterType", sb.entity().getClusterType(), SearchCriteria.Op.EQ);
- sb.and("allocationState", sb.entity().getAllocationState(), SearchCriteria.Op.EQ);
-
- if(zoneType != null) {
- SearchBuilder<DataCenterVO> zoneSb = _dcDao.createSearchBuilder();
- zoneSb.and("zoneNetworkType", zoneSb.entity().getNetworkType(), SearchCriteria.Op.EQ);
- sb.join("zoneSb", zoneSb, sb.entity().getDataCenterId(), zoneSb.entity().getId(), JoinBuilder.JoinType.INNER);
- }
- zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId);
-
+
++ zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId);
+
- SearchCriteria<ClusterVO> sc = sb.create();
if (id != null) {
- sc.setParameters("id", id);
+ sc.addAnd("id", SearchCriteria.Op.EQ, id);
}
if (name != null) {
@@@ -1436,24 -1456,9 +1418,9 @@@
Long zoneId = cmd.getZoneId();
Object keyword = cmd.getKeyword();
Object allocationState = cmd.getAllocationState();
- String zoneType = cmd.getZoneType();
- zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId);
-
- Filter searchFilter = new Filter(HostPodVO.class, "dataCenterId", true, cmd.getStartIndex(), cmd.getPageSizeVal());
- SearchBuilder<HostPodVO> sb = _hostPodDao.createSearchBuilder();
- sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
- sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
- sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
- sb.and("allocationState", sb.entity().getAllocationState(), SearchCriteria.Op.EQ);
-
- if(zoneType != null) {
- SearchBuilder<DataCenterVO> zoneSb = _dcDao.createSearchBuilder();
- zoneSb.and("zoneNetworkType", zoneSb.entity().getNetworkType(), SearchCriteria.Op.EQ);
- sb.join("zoneSb", zoneSb, sb.entity().getDataCenterId(), zoneSb.entity().getId(), JoinBuilder.JoinType.INNER);
- }
- zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId);
-
++ zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), zoneId);
+
- SearchCriteria<HostPodVO> sc = sb.create();
if (keyword != null) {
SearchCriteria<HostPodVO> ssc = _hostPodDao.createSearchCriteria();
ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");
@@@ -3072,8 -3077,7 +3035,7 @@@
@Override
public Pair<List<? extends VirtualMachine>, Integer> searchForSystemVm(ListSystemVMsCmd cmd) {
String type = cmd.getSystemVmType();
- Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), cmd.getZoneId());
+ Long zoneId = _accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(), cmd.getZoneId());
- String zoneType = cmd.getZoneType();
Long id = cmd.getId();
String name = cmd.getSystemVmName();
String state = cmd.getState();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/storage/StorageManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
index 6e218f8,c720169..0c78c4c
--- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
@@@ -572,10 -571,10 +571,10 @@@ public class SnapshotManagerImpl extend
String keyword = cmd.getKeyword();
String snapshotTypeStr = cmd.getSnapshotType();
String intervalTypeStr = cmd.getIntervalType();
- String zoneType = cmd.getZoneType();
Map<String, String> tags = cmd.getTags();
+ Long zoneId = cmd.getZoneId();
- Account caller = UserContext.current().getCaller();
+ Account caller = CallContext.current().getCallingAccount();
List<Long> permittedAccounts = new ArrayList<Long>();
// Verify parameters
@@@ -602,25 -601,20 +601,20 @@@
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
sb.and("snapshotTypeEQ", sb.entity().getsnapshotType(), SearchCriteria.Op.IN);
sb.and("snapshotTypeNEQ", sb.entity().getsnapshotType(), SearchCriteria.Op.NEQ);
+ sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
if (tags != null && !tags.isEmpty()) {
- SearchBuilder<ResourceTagVO> tagSearch = _resourceTagDao.createSearchBuilder();
- for (int count=0; count < tags.size(); count++) {
- tagSearch.or().op("key" + String.valueOf(count), tagSearch.entity().getKey(), SearchCriteria.Op.EQ);
- tagSearch.and("value" + String.valueOf(count), tagSearch.entity().getValue(), SearchCriteria.Op.EQ);
- tagSearch.cp();
- }
- tagSearch.and("resourceType", tagSearch.entity().getResourceType(), SearchCriteria.Op.EQ);
- sb.groupBy(sb.entity().getId());
- sb.join("tagSearch", tagSearch, sb.entity().getId(), tagSearch.entity().getResourceId(), JoinBuilder.JoinType.INNER);
- }
+ SearchBuilder<ResourceTagVO> tagSearch = _resourceTagDao.createSearchBuilder();
+ for (int count=0; count < tags.size(); count++) {
+ tagSearch.or().op("key" + String.valueOf(count), tagSearch.entity().getKey(), SearchCriteria.Op.EQ);
+ tagSearch.and("value" + String.valueOf(count), tagSearch.entity().getValue(), SearchCriteria.Op.EQ);
+ tagSearch.cp();
+ }
+ tagSearch.and("resourceType", tagSearch.entity().getResourceType(), SearchCriteria.Op.EQ);
+ sb.groupBy(sb.entity().getId());
+ sb.join("tagSearch", tagSearch, sb.entity().getId(), tagSearch.entity().getResourceId(), JoinBuilder.JoinType.INNER);
+ }
- if(zoneType != null) {
- SearchBuilder<DataCenterVO> zoneSb = _dcDao.createSearchBuilder();
- zoneSb.and("zoneNetworkType", zoneSb.entity().getNetworkType(), SearchCriteria.Op.EQ);
- sb.join("zoneSb", zoneSb, sb.entity().getDataCenterId(), zoneSb.entity().getId(), JoinBuilder.JoinType.INNER);
- }
-
SearchCriteria<SnapshotVO> sc = sb.create();
_accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
@@@ -638,10 -632,10 +632,10 @@@
}
}
- if(zoneType != null) {
- sc.setJoinParameters("zoneSb", "zoneNetworkType", zoneType);
+ if (zoneId != null) {
+ sc.setParameters("dataCenterId", zoneId);
}
-
+
if (name != null) {
sc.setParameters("name", "%" + name + "%");
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
index 1902b3a,4696bb5..3f9d533
--- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
@@@ -57,6 -55,8 +56,7 @@@ import com.cloud.user.User
import com.cloud.utils.DateUtil;
import com.cloud.utils.DateUtil.IntervalType;
import com.cloud.utils.NumbersUtil;
-
+ import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.concurrency.TestClock;
import com.cloud.utils.db.DB;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/storage/upload/UploadMonitorImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/vm/UserVmManagerImpl.java
index d37ef95,e8ea024..32ba298
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@@ -3407,6 -3393,10 +3379,10 @@@ public class UserVmManagerImpl extends
@Override
public void collectVmDiskStatistics (UserVmVO userVm) {
+ // support KVM and XenServer only
+ if (!userVm.getHypervisorType().equals(HypervisorType.XenServer)
+ && !userVm.getHypervisorType().equals(HypervisorType.KVM))
- return;
++ return;
// Collect vm disk statistics from host before stopping Vm
long hostId = userVm.getHostId();
List<String> vmNames = new ArrayList<String>();
@@@ -3905,8 -3895,12 +3881,11 @@@
+ " already has max Running VMs(count includes system VMs), cannot migrate to this host");
}
- collectVmDiskStatistics(vm);
+ UserVmVO uservm = _vmDao.findById(vmId);
+ if (uservm != null) {
+ collectVmDiskStatistics(uservm);
+ }
- VMInstanceVO migratedVm = _itMgr.migrate(vm, srcHostId, dest);
- return migratedVm;
+ return _itMgr.migrate(vm.getUuid(), srcHostId, dest);
}
private boolean checkIfHostIsDedicated(HostVO host) {
@@@ -4634,4 -4684,24 +4605,23 @@@
if (vm.getState() == State.Running)
collectVmDiskStatistics(vm);
}
+
+ private void encryptAndStorePassword(UserVmVO vm, String password) {
+ String sshPublicKey = vm.getDetail("SSH.PublicKey");
+ if (sshPublicKey != null && !sshPublicKey.equals("")
+ && password != null && !password.equals("saved_password")) {
+ if (!sshPublicKey.startsWith("ssh-rsa")) {
+ s_logger.warn("Only RSA public keys can be used to encrypt a vm password.");
+ return;
+ }
+ String encryptedPasswd = RSAHelper.encryptWithSSHPublicKey(
+ sshPublicKey, password);
+ if (encryptedPasswd == null) {
+ throw new CloudRuntimeException("Error encrypting password");
+ }
+
+ vm.setDetail("Encrypted.Password", encryptedPasswd);
+ _vmDao.saveDetails(vm);
+ }
+ }
-
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e2edae17/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------