Updated Branches: refs/heads/master aed5e9dc2 -> 85b5c6e35
CLOUDSTACK-4785: Add support for adding user vm details and removing them. Signed off by : nitin mehta<nitin.me...@citrix.com> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/85b5c6e3 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/85b5c6e3 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/85b5c6e3 Branch: refs/heads/master Commit: 85b5c6e3535fad238a08e5df01e69e2336409c01 Parents: aed5e9d Author: Nitin Mehta <nitin.me...@citrix.com> Authored: Wed Oct 2 14:16:45 2013 -0700 Committer: Nitin Mehta <nitin.me...@citrix.com> Committed: Wed Oct 2 14:16:45 2013 -0700 ---------------------------------------------------------------------- .../src/com/cloud/vm/dao/UserVmDetailsDao.java | 3 ++ .../com/cloud/vm/dao/UserVmDetailsDaoImpl.java | 15 +++++++++ .../metadata/ResourceMetaDataManagerImpl.java | 32 ++++++++++++-------- 3 files changed, 37 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85b5c6e3/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java index bdccec9..e2fa720 100644 --- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java +++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDao.java @@ -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); + } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85b5c6e3/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java index 6ec6f68..01abce3 100644 --- a/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/dao/UserVmDetailsDaoImpl.java @@ -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); + } + + } + + } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/85b5c6e3/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java index 82a62be..80d5055 100644 --- a/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java +++ b/server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java @@ -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;