mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-16 10:32:34 +01:00
Preparation for 2.1 to 2.2 DB migration: create instance group object if "vm_instance.group" field is not empty for user vm
This commit is contained in:
parent
012f097885
commit
8525992d41
@ -1,6 +1,8 @@
|
|||||||
package com.cloud.migration;
|
package com.cloud.migration;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.log4j.xml.DOMConfigurator;
|
import org.apache.log4j.xml.DOMConfigurator;
|
||||||
@ -16,16 +18,25 @@ import com.cloud.utils.PropertiesUtil;
|
|||||||
import com.cloud.utils.component.ComponentLocator;
|
import com.cloud.utils.component.ComponentLocator;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
|
import com.cloud.utils.db.Transaction;
|
||||||
|
import com.cloud.vm.InstanceGroupVMMapVO;
|
||||||
|
import com.cloud.vm.InstanceGroupVO;
|
||||||
|
import com.cloud.vm.dao.InstanceGroupDao;
|
||||||
|
import com.cloud.vm.dao.InstanceGroupVMMapDao;
|
||||||
|
|
||||||
public class Db21to22MigrationUtil {
|
public class Db21to22MigrationUtil {
|
||||||
private AccountDao _accountDao;
|
private AccountDao _accountDao;
|
||||||
private DomainDao _domainDao;
|
private DomainDao _domainDao;
|
||||||
private ResourceCountDao _resourceCountDao;
|
private ResourceCountDao _resourceCountDao;
|
||||||
|
private InstanceGroupDao _vmGroupDao;
|
||||||
|
private InstanceGroupVMMapDao _groupVMMapDao;
|
||||||
|
|
||||||
private void doMigration() {
|
private void doMigration() {
|
||||||
setupComponents();
|
setupComponents();
|
||||||
|
|
||||||
migrateResourceCounts();
|
migrateResourceCounts();
|
||||||
|
|
||||||
|
setupInstanceGroups();
|
||||||
|
|
||||||
System.out.println("Migration done");
|
System.out.println("Migration done");
|
||||||
}
|
}
|
||||||
@ -62,7 +73,48 @@ public class Db21to22MigrationUtil {
|
|||||||
_accountDao = locator.getDao(AccountDao.class);
|
_accountDao = locator.getDao(AccountDao.class);
|
||||||
_domainDao = locator.getDao(DomainDao.class);
|
_domainDao = locator.getDao(DomainDao.class);
|
||||||
_resourceCountDao = locator.getDao(ResourceCountDao.class);
|
_resourceCountDao = locator.getDao(ResourceCountDao.class);
|
||||||
|
_vmGroupDao = locator.getDao(InstanceGroupDao.class);
|
||||||
|
_groupVMMapDao = locator.getDao(InstanceGroupVMMapDao.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setupInstanceGroups() {
|
||||||
|
System.out.println("setting up vm instance groups");
|
||||||
|
|
||||||
|
//Search for all the vms that have not null groups
|
||||||
|
long vmId = 0;
|
||||||
|
long accountId = 0;
|
||||||
|
String groupName;
|
||||||
|
Transaction txn = Transaction.open(Transaction.CLOUD_DB);
|
||||||
|
txn.start();
|
||||||
|
try {
|
||||||
|
String request = "SELECT vm.id, uservm.account_id, vm.group from vm_instance vm, user_vm uservm where vm.group is not null and vm.removed is null and vm.id=uservm.id order by id";
|
||||||
|
PreparedStatement statement = txn.prepareAutoCloseStatement(request);
|
||||||
|
ResultSet result = statement.executeQuery();
|
||||||
|
while (result.next()) {
|
||||||
|
vmId = result.getLong(1);
|
||||||
|
accountId = result.getLong(2);
|
||||||
|
groupName = result.getString(3);
|
||||||
|
InstanceGroupVO group = _vmGroupDao.findByAccountAndName(vmId, groupName);
|
||||||
|
//Create vm group if the group doesn't exist for this account
|
||||||
|
if (group == null) {
|
||||||
|
group = new InstanceGroupVO(groupName, accountId);
|
||||||
|
group = _vmGroupDao.persist(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (group != null) {
|
||||||
|
InstanceGroupVMMapVO groupVmMapVO = new InstanceGroupVMMapVO(group.getId(), vmId);
|
||||||
|
_groupVMMapDao.persist(groupVmMapVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
statement.close();
|
||||||
|
txn.commit();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Unhandled exception: " + e);
|
||||||
|
} finally {
|
||||||
|
txn.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
File file = PropertiesUtil.findConfigFile("log4j-cloud.xml");
|
File file = PropertiesUtil.findConfigFile("log4j-cloud.xml");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user