CLOUDSTACK-4785:

Add support for adding user vm details and removing them.
Signed off by : nitin mehta<nitin.mehta@citrix.com>
This commit is contained in:
Nitin Mehta 2013-10-02 14:16:45 -07:00
parent aed5e9dc2a
commit 85b5c6e353
3 changed files with 37 additions and 13 deletions

View File

@ -29,4 +29,7 @@ public interface UserVmDetailsDao extends GenericDao<UserVmDetailVO, Long> {
UserVmDetailVO findDetail(long vmId, String name);
void deleteDetails(long vmId);
public void removeDetails(Long vmId, String key);
}

View File

@ -22,6 +22,7 @@ import java.util.Map;
import javax.ejb.Local;
import com.cloud.vm.NicDetailVO;
import org.springframework.stereotype.Component;
import com.cloud.utils.db.GenericDaoBase;
@ -96,4 +97,18 @@ public class UserVmDetailsDaoImpl extends GenericDaoBase<UserVmDetailVO, Long> i
txn.commit();
}
@Override
public void removeDetails(Long vmId, String key) {
if(key != null){
UserVmDetailVO detail = findDetail(vmId, key);
if(detail != null){
remove(detail.getId());
}
}else {
deleteDetails(vmId);
}
}
}

View File

@ -23,6 +23,14 @@ import javax.ejb.Local;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
import com.cloud.server.ResourceMetaDataService;
import com.cloud.storage.VolumeDetailVO;
import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.vm.NicDetailVO;
import com.cloud.vm.UserVmDetailVO;
import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.NicDetailDao;
import com.cloud.vm.dao.UserVmDetailsDao;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@ -40,15 +48,12 @@ import com.cloud.network.security.dao.SecurityGroupDao;
import com.cloud.network.vpc.dao.StaticRouteDao;
import com.cloud.network.vpc.dao.VpcDao;
import com.cloud.projects.dao.ProjectDao;
import com.cloud.server.ResourceMetaDataService;
import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType;
import com.cloud.server.TaggedResourceService;
import com.cloud.storage.VolumeDetailVO;
import com.cloud.storage.dao.SnapshotDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.AccountManager;
import com.cloud.user.DomainManager;
@ -57,12 +62,7 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDao;
import com.cloud.utils.db.Transaction;
import com.cloud.uuididentity.dao.IdentityDao;
import com.cloud.vm.NicDetailVO;
import com.cloud.vm.UserVmDetailVO;
import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.NicDetailDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.UserVmDetailsDao;
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
@ -119,6 +119,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
@Inject
NicDetailDao _nicDetailDao;
@Inject
UserVmDetailsDao _userVmDetailDao;
@Inject
NicDao _nicDao;
@Inject
TaggedResourceService _taggedResourceMgr;
@ -203,10 +205,10 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
} else if (resourceType == TaggedResourceType.Nic){
NicDetailVO n = new NicDetailVO(id, key, value);
_nicDetailDao.persist(n);
} else if (resourceType == TaggedResourceType.UserVm) {
UserVmDetailVO v = new UserVmDetailVO(id, key, value);
_userVmDetail.persist(v);
}else{
}else if (resourceType == TaggedResourceType.UserVm){
UserVmDetailVO userVmDetail = new UserVmDetailVO(id, key, value);
_userVmDetailDao.persist(userVmDetail);
} else {
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
}
@ -227,8 +229,12 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
// TODO - Have a better design here.
if(resourceType == TaggedResourceType.Volume){
_volumeDetailDao.removeDetails(id, key);
} else {
} else if(resourceType == TaggedResourceType.Nic){
_nicDetailDao.removeDetails(id, key);
} else if(resourceType == TaggedResourceType.UserVm){
_userVmDetailDao.removeDetails(id, key);
} else {
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
}
return true;