ResourceMetaData (Resource details) fixes:

* changed name for TaggedResourceType enum to ResourceObjectType as this enum is used both by ResourceMetaData and ResourceTags code
* enhanced the enum with extra fields resourceTagsSupport (boolean) and metadataSupport identifying if the resource supports tags and/or metadata.
* cleanup unused @Inject objects from the ResourceMetaDataManager
This commit is contained in:
Alena Prokharchyk 2013-10-23 15:49:58 -07:00
parent e52e7a5634
commit 2bb716efd8
50 changed files with 277 additions and 393 deletions

View File

@ -16,22 +16,19 @@
// under the License.package com.cloud.server; // under the License.package com.cloud.server;
package com.cloud.server; package com.cloud.server;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
public interface ResourceMetaDataService { public interface ResourceMetaDataService {
TaggedResourceType getResourceType (String resourceTypeStr);
/** /**
* @param resourceId TODO * @param resourceId TODO
* @param resourceType * @param resourceType
* @param details * @param details
* @return * @return
*/ */
boolean addResourceMetaData(String resourceId, TaggedResourceType resourceType, Map<String, String> details); boolean addResourceMetaData(String resourceId, ResourceObjectType resourceType, Map<String, String> details);
/** /**
@ -41,7 +38,7 @@ public interface ResourceMetaDataService {
* @param key * @param key
* @return * @return
*/ */
public boolean deleteResourceMetaData(String resourceId, TaggedResourceType resourceType, String key); public boolean deleteResourceMetaData(String resourceId, ResourceObjectType resourceType, String key);
} }

View File

@ -22,27 +22,44 @@ import org.apache.cloudstack.api.InternalIdentity;
public interface ResourceTag extends ControlledEntity, Identity, InternalIdentity { public interface ResourceTag extends ControlledEntity, Identity, InternalIdentity {
public enum TaggedResourceType { //FIXME - extract enum to another interface as its used both by resourceTags and resourceMetaData code
UserVm, public enum ResourceObjectType {
Template, UserVm (true, true),
ISO, Template (true, true),
Volume, ISO (true, false),
Snapshot, Volume (true, true),
Network, Snapshot (true, false),
Nic, Network (true, true),
LoadBalancer, Nic (false, true),
PortForwardingRule, LoadBalancer (true, false),
FirewallRule, PortForwardingRule (true, false),
SecurityGroup, FirewallRule (true, false),
PublicIpAddress, SecurityGroup (true, false),
Project, PublicIpAddress (true, false),
Vpc, Project (true, false),
NetworkACL, Vpc (true, false),
StaticRoute, NetworkACL (true, false),
VMSnapshot, StaticRoute (true, false),
RemoteAccessVpn, VMSnapshot (true, false),
Zone, RemoteAccessVpn (true, false),
ServiceOffering Zone (false, true),
ServiceOffering (false, true);
ResourceObjectType(boolean resourceTagsSupport, boolean resourceMetadataSupport) {
this.resourceTagsSupport = resourceTagsSupport;
this.metadataSupport = resourceMetadataSupport;
}
private final boolean resourceTagsSupport;
private final boolean metadataSupport;
public boolean resourceTagsSupport() {
return this.resourceTagsSupport;
}
public boolean resourceMetadataSupport() {
return this.metadataSupport;
}
} }
/** /**
@ -63,7 +80,7 @@ public interface ResourceTag extends ControlledEntity, Identity, InternalIdentit
/** /**
* @return * @return
*/ */
TaggedResourceType getResourceType(); ResourceObjectType getResourceType();
/** /**
* @return * @return

View File

@ -19,12 +19,10 @@ package com.cloud.server;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
public interface TaggedResourceService { public interface TaggedResourceService {
TaggedResourceType getResourceType (String resourceTypeStr);
/** /**
* @param resourceIds TODO * @param resourceIds TODO
* @param resourceType * @param resourceType
@ -32,14 +30,7 @@ public interface TaggedResourceService {
* @param customer TODO * @param customer TODO
* @return * @return
*/ */
List<ResourceTag> createTags(List<String> resourceIds, TaggedResourceType resourceType, Map<String, String> tags, String customer); List<ResourceTag> createTags(List<String> resourceIds, ResourceObjectType resourceType, Map<String, String> tags, String customer);
/**
* @param resourceId
* @param resourceType
* @return
*/
String getUuid(String resourceId, TaggedResourceType resourceType);
/** /**
@ -48,10 +39,19 @@ public interface TaggedResourceService {
* @param tags * @param tags
* @return * @return
*/ */
boolean deleteTags(List<String> resourceIds, TaggedResourceType resourceType, Map<String, String> tags); boolean deleteTags(List<String> resourceIds, ResourceObjectType resourceType, Map<String, String> tags);
List<? extends ResourceTag> listByResourceTypeAndId(TaggedResourceType type, long resourceId); List<? extends ResourceTag> listByResourceTypeAndId(ResourceObjectType type, long resourceId);
public Long getResourceId(String resourceId, TaggedResourceType resourceType); //FIXME - the methods below should be extracted to its separate manager/service responsible just for retrieving object details
ResourceObjectType getResourceType (String resourceTypeStr);
} /**
* @param resourceId
* @param resourceType
* @return
*/
String getUuid(String resourceId, ResourceObjectType resourceType);
public long getResourceId(String resourceId, ResourceObjectType resourceType);
}

View File

@ -34,7 +34,7 @@ import org.apache.log4j.Logger;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
@APICommand(name = "createTags", description = "Creates resource tag(s)", responseObject = SuccessResponse.class, since = "4.0.0") @APICommand(name = "createTags", description = "Creates resource tag(s)", responseObject = SuccessResponse.class, since = "4.0.0")
public class CreateTagsCmd extends BaseAsyncCmd{ public class CreateTagsCmd extends BaseAsyncCmd{
public static final Logger s_logger = Logger.getLogger(CreateTagsCmd.class.getName()); public static final Logger s_logger = Logger.getLogger(CreateTagsCmd.class.getName());
@ -64,7 +64,7 @@ public class CreateTagsCmd extends BaseAsyncCmd{
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
public TaggedResourceType getResourceType(){ public ResourceObjectType getResourceType(){
return _taggedResourceService.getResourceType(resourceType); return _taggedResourceService.getResourceType(resourceType);
} }

View File

@ -33,7 +33,7 @@ import org.apache.cloudstack.api.response.SuccessResponse;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
@APICommand(name = "deleteTags", description = "Deleting resource tag(s)", responseObject = SuccessResponse.class, since = "4.0.0") @APICommand(name = "deleteTags", description = "Deleting resource tag(s)", responseObject = SuccessResponse.class, since = "4.0.0")
public class DeleteTagsCmd extends BaseAsyncCmd{ public class DeleteTagsCmd extends BaseAsyncCmd{
public static final Logger s_logger = Logger.getLogger(DeleteTagsCmd.class.getName()); public static final Logger s_logger = Logger.getLogger(DeleteTagsCmd.class.getName());
@ -59,7 +59,7 @@ public class DeleteTagsCmd extends BaseAsyncCmd{
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
public TaggedResourceType getResourceType(){ public ResourceObjectType getResourceType(){
return _taggedResourceService.getResourceType(resourceType); return _taggedResourceService.getResourceType(resourceType);
} }

View File

@ -71,7 +71,7 @@ public class AddResourceDetailCmd extends BaseAsyncCmd {
return detailsMap; return detailsMap;
} }
public ResourceTag.TaggedResourceType getResourceType() { public ResourceTag.ResourceObjectType getResourceType() {
return _taggedResourceService.getResourceType(resourceType); return _taggedResourceService.getResourceType(resourceType);
} }

View File

@ -55,7 +55,7 @@ public class ListResourceDetailsCmd extends BaseListProjectAndAccountResourcesCm
this.setResponseObject(response); this.setResponseObject(response);
} }
public ResourceTag.TaggedResourceType getResourceType() { public ResourceTag.ResourceObjectType getResourceType() {
return _taggedResourceService.getResourceType(resourceType); return _taggedResourceService.getResourceType(resourceType);
} }

View File

@ -51,7 +51,7 @@ public class RemoveResourceDetailCmd extends BaseAsyncCmd {
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
public ResourceTag.TaggedResourceType getResourceType(){ public ResourceTag.ResourceObjectType getResourceType(){
return _taggedResourceService.getResourceType(resourceType); return _taggedResourceService.getResourceType(resourceType);
} }

View File

@ -29,7 +29,7 @@ import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.FirewallRule.State; import com.cloud.network.rules.FirewallRule.State;
import com.cloud.network.rules.FirewallRule.TrafficType; import com.cloud.network.rules.FirewallRule.TrafficType;
import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.FirewallRuleVO;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
@ -314,13 +314,13 @@ public class FirewallRulesDaoImpl extends GenericDaoBase<FirewallRuleVO, Long> i
FirewallRuleVO entry = findById(id); FirewallRuleVO entry = findById(id);
if (entry != null) { if (entry != null) {
if (entry.getPurpose() == Purpose.LoadBalancing) { if (entry.getPurpose() == Purpose.LoadBalancing) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.LoadBalancer); _tagsDao.removeByIdAndType(id, ResourceObjectType.LoadBalancer);
} else if (entry.getPurpose() == Purpose.PortForwarding) { } else if (entry.getPurpose() == Purpose.PortForwarding) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.PortForwardingRule); _tagsDao.removeByIdAndType(id, ResourceObjectType.PortForwardingRule);
} else if (entry.getPurpose() == Purpose.Firewall) { } else if (entry.getPurpose() == Purpose.Firewall) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.FirewallRule); _tagsDao.removeByIdAndType(id, ResourceObjectType.FirewallRule);
} else if (entry.getPurpose() == Purpose.NetworkACL) { } else if (entry.getPurpose() == Purpose.NetworkACL) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.NetworkACL); _tagsDao.removeByIdAndType(id, ResourceObjectType.NetworkACL);
} }
} }
boolean result = super.remove(id); boolean result = super.remove(id);

View File

@ -21,7 +21,7 @@ import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO; import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.VlanDao; import com.cloud.dc.dao.VlanDao;
import com.cloud.network.IpAddress.State; import com.cloud.network.IpAddress.State;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
@ -394,7 +394,7 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
txn.start(); txn.start();
IPAddressVO entry = findById(id); IPAddressVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.SecurityGroup); _tagsDao.removeByIdAndType(id, ResourceObjectType.SecurityGroup);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -40,7 +40,7 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.offerings.dao.NetworkOfferingDao;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.utils.db.*; import com.cloud.utils.db.*;
import com.cloud.utils.db.JoinBuilder.JoinType; import com.cloud.utils.db.JoinBuilder.JoinType;
@ -580,7 +580,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
txn.start(); txn.start();
NetworkVO entry = findById(id); NetworkVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.Network); _tagsDao.removeByIdAndType(id, ResourceObjectType.Network);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -24,7 +24,7 @@ import javax.inject.Inject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.network.security.SecurityGroupVO; import com.cloud.network.security.SecurityGroupVO;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl;
@ -113,7 +113,7 @@ public class SecurityGroupDaoImpl extends GenericDaoBase<SecurityGroupVO, Long>
txn.start(); txn.start();
SecurityGroupVO entry = findById(id); SecurityGroupVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.SecurityGroup); _tagsDao.removeByIdAndType(id, ResourceObjectType.SecurityGroup);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();
@ -127,7 +127,7 @@ public class SecurityGroupDaoImpl extends GenericDaoBase<SecurityGroupVO, Long>
txn.start(); txn.start();
SecurityGroupVO entry = findById(id); SecurityGroupVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.SecurityGroup); _tagsDao.removeByIdAndType(id, ResourceObjectType.SecurityGroup);
} }
boolean result = super.expunge(id); boolean result = super.expunge(id);
txn.commit(); txn.commit();

View File

@ -25,7 +25,7 @@ import org.springframework.stereotype.Component;
import com.cloud.network.vpc.StaticRoute; import com.cloud.network.vpc.StaticRoute;
import com.cloud.network.vpc.StaticRouteVO; import com.cloud.network.vpc.StaticRouteVO;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl;
@ -110,7 +110,7 @@ public class StaticRouteDaoImpl extends GenericDaoBase<StaticRouteVO, Long> impl
txn.start(); txn.start();
StaticRouteVO entry = findById(id); StaticRouteVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.StaticRoute); _tagsDao.removeByIdAndType(id, ResourceObjectType.StaticRoute);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -28,7 +28,7 @@ import org.springframework.stereotype.Component;
import com.cloud.network.vpc.Vpc; import com.cloud.network.vpc.Vpc;
import com.cloud.network.vpc.VpcVO; import com.cloud.network.vpc.VpcVO;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
@ -111,7 +111,7 @@ public class VpcDaoImpl extends GenericDaoBase<VpcVO, Long> implements VpcDao{
txn.start(); txn.start();
VpcVO entry = findById(id); VpcVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.Vpc); _tagsDao.removeByIdAndType(id, ResourceObjectType.Vpc);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -26,7 +26,7 @@ import org.springframework.stereotype.Component;
import com.cloud.projects.Project; import com.cloud.projects.Project;
import com.cloud.projects.ProjectVO; import com.cloud.projects.ProjectVO;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl;
@ -84,7 +84,7 @@ public class ProjectDaoImpl extends GenericDaoBase<ProjectVO, Long> implements P
return false; return false;
} }
_tagsDao.removeByIdAndType(projectId, TaggedResourceType.Project); _tagsDao.removeByIdAndType(projectId, ResourceObjectType.Project);
result = super.remove(projectId); result = super.remove(projectId);
txn.commit(); txn.commit();

View File

@ -27,7 +27,7 @@ import javax.inject.Inject;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.DataStoreRole; import com.cloud.storage.DataStoreRole;
import com.cloud.storage.Snapshot; import com.cloud.storage.Snapshot;
import com.cloud.storage.Snapshot.Event; import com.cloud.storage.Snapshot.Event;
@ -308,7 +308,7 @@ public class SnapshotDaoImpl extends GenericDaoBase<SnapshotVO, Long> implements
txn.start(); txn.start();
SnapshotVO entry = findById(id); SnapshotVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.Snapshot); _tagsDao.removeByIdAndType(id, ResourceObjectType.Snapshot);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -40,7 +40,7 @@ import com.cloud.host.Host;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.Storage; import com.cloud.storage.Storage;
import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.Storage.TemplateType;
@ -175,7 +175,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.ISO.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.ISO.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));
@ -880,9 +880,9 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
VMTemplateVO vo = findById(id); VMTemplateVO vo = findById(id);
if (vo != null) { if (vo != null) {
if (vo.getFormat() == ImageFormat.ISO) { if (vo.getFormat() == ImageFormat.ISO) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.ISO); _tagsDao.removeByIdAndType(id, ResourceObjectType.ISO);
} else { } else {
_tagsDao.removeByIdAndType(id, TaggedResourceType.Template); _tagsDao.removeByIdAndType(id, ResourceObjectType.Template);
} }
} }

View File

@ -31,7 +31,7 @@ import org.springframework.stereotype.Component;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.ScopeType; import com.cloud.storage.ScopeType;
import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Volume; import com.cloud.storage.Volume;
@ -523,7 +523,7 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol
txn.start(); txn.start();
VolumeVO entry = findById(id); VolumeVO entry = findById(id);
if (entry != null) { if (entry != null) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.Volume); _tagsDao.removeByIdAndType(id, ResourceObjectType.Volume);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -64,7 +64,7 @@ public class ResourceTagVO implements ResourceTag {
@Column(name="resource_type") @Column(name="resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType resourceType; private ResourceObjectType resourceType;
@Column(name="customer") @Column(name="customer")
String customer; String customer;
@ -85,7 +85,7 @@ public class ResourceTagVO implements ResourceTag {
* @param resourceUuid TODO * @param resourceUuid TODO
*/ */
public ResourceTagVO(String key, String value, long accountId, long domainId, long resourceId, public ResourceTagVO(String key, String value, long accountId, long domainId, long resourceId,
TaggedResourceType resourceType, String customer, String resourceUuid) { ResourceObjectType resourceType, String customer, String resourceUuid) {
super(); super();
this.key = key; this.key = key;
this.value = value; this.value = value;
@ -139,7 +139,7 @@ public class ResourceTagVO implements ResourceTag {
} }
@Override @Override
public TaggedResourceType getResourceType() { public ResourceObjectType getResourceType() {
return resourceType; return resourceType;
} }

View File

@ -19,7 +19,7 @@ package com.cloud.tags.dao;
import java.util.List; import java.util.List;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.GenericDao;
@ -30,8 +30,8 @@ public interface ResourceTagDao extends GenericDao<ResourceTagVO, Long>{
* @param resourceType * @param resourceType
* @return * @return
*/ */
boolean removeByIdAndType(long resourceId, TaggedResourceType resourceType); boolean removeByIdAndType(long resourceId, ResourceObjectType resourceType);
List<? extends ResourceTag> listBy(long resourceId, TaggedResourceType resourceType); List<? extends ResourceTag> listBy(long resourceId, ResourceObjectType resourceType);
} }

View File

@ -23,7 +23,7 @@ import javax.ejb.Local;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchBuilder;
@ -44,7 +44,7 @@ public class ResourceTagsDaoImpl extends GenericDaoBase<ResourceTagVO, Long> imp
} }
@Override @Override
public boolean removeByIdAndType(long resourceId, ResourceTag.TaggedResourceType resourceType) { public boolean removeByIdAndType(long resourceId, ResourceTag.ResourceObjectType resourceType) {
SearchCriteria<ResourceTagVO> sc = AllFieldsSearch.create(); SearchCriteria<ResourceTagVO> sc = AllFieldsSearch.create();
sc.setParameters("resourceId", resourceId); sc.setParameters("resourceId", resourceId);
sc.setParameters("resourceType", resourceType); sc.setParameters("resourceType", resourceType);
@ -53,7 +53,7 @@ public class ResourceTagsDaoImpl extends GenericDaoBase<ResourceTagVO, Long> imp
} }
@Override @Override
public List<? extends ResourceTag> listBy(long resourceId, TaggedResourceType resourceType) { public List<? extends ResourceTag> listBy(long resourceId, ResourceObjectType resourceType) {
SearchCriteria<ResourceTagVO> sc = AllFieldsSearch.create(); SearchCriteria<ResourceTagVO> sc = AllFieldsSearch.create();
sc.setParameters("resourceId", resourceId); sc.setParameters("resourceId", resourceId);
sc.setParameters("resourceType", resourceType); sc.setParameters("resourceType", resourceType);

View File

@ -34,7 +34,7 @@ import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.configuration.Resource; import com.cloud.configuration.Resource;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.tags.dao.ResourceTagsDaoImpl;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -577,7 +577,7 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
public boolean remove(Long id) { public boolean remove(Long id) {
TransactionLegacy txn = TransactionLegacy.currentTxn(); TransactionLegacy txn = TransactionLegacy.currentTxn();
txn.start(); txn.start();
_tagsDao.removeByIdAndType(id, TaggedResourceType.UserVm); _tagsDao.removeByIdAndType(id, ResourceObjectType.UserVm);
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();
return result; return result;

View File

@ -35,7 +35,7 @@ import org.springframework.stereotype.Component;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.db.Attribute; import com.cloud.utils.db.Attribute;
@ -658,7 +658,7 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem
txn.start(); txn.start();
VMInstanceVO vm = findById(id); VMInstanceVO vm = findById(id);
if (vm != null && vm.getType() == Type.User) { if (vm != null && vm.getType() == Type.User) {
_tagsDao.removeByIdAndType(id, TaggedResourceType.UserVm); _tagsDao.removeByIdAndType(id, ResourceObjectType.UserVm);
} }
boolean result = super.remove(id); boolean result = super.remove(id);
txn.commit(); txn.commit();

View File

@ -217,7 +217,7 @@ import com.cloud.resource.ResourceManager;
import com.cloud.server.Criteria; import com.cloud.server.Criteria;
import com.cloud.server.ManagementServer; import com.cloud.server.ManagementServer;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.StatsCollector; import com.cloud.server.StatsCollector;
import com.cloud.server.TaggedResourceService; import com.cloud.server.TaggedResourceService;
import com.cloud.service.ServiceOfferingVO; import com.cloud.service.ServiceOfferingVO;
@ -1154,11 +1154,11 @@ public class ApiDBUtils {
return vmSnapshot; return vmSnapshot;
} }
public static String getUuid(String resourceId, TaggedResourceType resourceType) { public static String getUuid(String resourceId, ResourceObjectType resourceType) {
return _taggedResourceService.getUuid(resourceId, resourceType); return _taggedResourceService.getUuid(resourceId, resourceType);
} }
public static List<? extends ResourceTag> listByResourceTypeAndId(TaggedResourceType type, long resourceId) { public static List<? extends ResourceTag> listByResourceTypeAndId(ResourceObjectType type, long resourceId) {
return _taggedResourceService.listByResourceTypeAndId(type, resourceId); return _taggedResourceService.listByResourceTypeAndId(type, resourceId);
} }
public static List<ConditionVO> getAutoScalePolicyConditions(long policyId) public static List<ConditionVO> getAutoScalePolicyConditions(long policyId)
@ -1689,7 +1689,7 @@ public class ApiDBUtils {
return _accountService.isAdmin(account.getType()); return _accountService.isAdmin(account.getType());
} }
public static List<ResourceTagJoinVO> listResourceTagViewByResourceUUID(String resourceUUID, TaggedResourceType resourceType){ public static List<ResourceTagJoinVO> listResourceTagViewByResourceUUID(String resourceUUID, ResourceObjectType resourceType){
return _tagJoinDao.listBy(resourceUUID, resourceType); return _tagJoinDao.listBy(resourceUUID, resourceType);
} }
} }

View File

@ -256,7 +256,7 @@ import com.cloud.projects.ProjectInvitation;
import com.cloud.region.ha.GlobalLoadBalancerRule; import com.cloud.region.ha.GlobalLoadBalancerRule;
import com.cloud.server.Criteria; import com.cloud.server.Criteria;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.service.ServiceOfferingVO; import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.DataStoreRole; import com.cloud.storage.DataStoreRole;
import com.cloud.storage.DiskOfferingVO; import com.cloud.storage.DiskOfferingVO;
@ -466,7 +466,7 @@ public class ApiResponseHelper implements ResponseGenerator {
snapshotResponse.setRevertable(snapshotInfo.isRevertable()); snapshotResponse.setRevertable(snapshotInfo.isRevertable());
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.Snapshot, snapshot.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.Snapshot, snapshot.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -719,7 +719,7 @@ public class ApiResponseHelper implements ResponseGenerator {
ipResponse.setPortable(ipAddr.isPortable()); ipResponse.setPortable(ipAddr.isPortable());
//set tag information //set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.PublicIpAddress, ipAddr.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.PublicIpAddress, ipAddr.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -759,7 +759,7 @@ public class ApiResponseHelper implements ResponseGenerator {
} }
//set tag information //set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.LoadBalancer, loadBalancer.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.LoadBalancer, loadBalancer.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -1047,7 +1047,7 @@ public class ApiResponseHelper implements ResponseGenerator {
} }
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.PortForwardingRule, fwRule.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.PortForwardingRule, fwRule.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -2308,7 +2308,7 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setCanUseForDeploy(ApiDBUtils.canUseForDeploy(network)); response.setCanUseForDeploy(ApiDBUtils.canUseForDeploy(network));
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.Network, network.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.Network, network.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -2382,7 +2382,7 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setIcmpType(fwRule.getIcmpType()); response.setIcmpType(fwRule.getIcmpType());
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.FirewallRule, fwRule.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.FirewallRule, fwRule.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -2432,7 +2432,7 @@ public class ApiResponseHelper implements ResponseGenerator {
} }
//set tag information //set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.NetworkACL, aclItem.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.NetworkACL, aclItem.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -2945,7 +2945,7 @@ public class ApiResponseHelper implements ResponseGenerator {
populateOwner(response, vpc); populateOwner(response, vpc);
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.Vpc, vpc.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.Vpc, vpc.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -3136,7 +3136,7 @@ public class ApiResponseHelper implements ResponseGenerator {
populateDomain(response, result.getDomainId()); populateDomain(response, result.getDomainId());
// set tag information // set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.StaticRoute, result.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.StaticRoute, result.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
@ -3642,7 +3642,7 @@ public class ApiResponseHelper implements ResponseGenerator {
lbResponse.setLbInstances(instanceResponses); lbResponse.setLbInstances(instanceResponses);
//set tag information //set tag information
List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.LoadBalancer, lb.getId()); List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(ResourceObjectType.LoadBalancer, lb.getId());
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>(); List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
for (ResourceTag tag : tags) { for (ResourceTag tag : tags) {
ResourceTagResponse tagResponse = createResourceTagResponse(tag, true); ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);

View File

@ -155,7 +155,7 @@ import com.cloud.resource.ResourceManager;
import com.cloud.server.Criteria; import com.cloud.server.Criteria;
import com.cloud.server.ResourceMetaDataService; import com.cloud.server.ResourceMetaDataService;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.TaggedResourceService; import com.cloud.server.TaggedResourceService;
import com.cloud.service.ServiceOfferingVO; import com.cloud.service.ServiceOfferingVO;
import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.service.dao.ServiceOfferingDao;
@ -2690,7 +2690,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
if (resourceTags != null && !resourceTags.isEmpty()) { if (resourceTags != null && !resourceTags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.Zone.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.Zone.toString());
for (String key : resourceTags.keySet()) { for (String key : resourceTags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), resourceTags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), resourceTags.get(key));
@ -2946,9 +2946,9 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
scTag.addAnd("tagKey", SearchCriteria.Op.EQ, key); scTag.addAnd("tagKey", SearchCriteria.Op.EQ, key);
scTag.addAnd("tagValue", SearchCriteria.Op.EQ, tags.get(key)); scTag.addAnd("tagValue", SearchCriteria.Op.EQ, tags.get(key));
if (isIso) { if (isIso) {
scTag.addAnd("tagResourceType", SearchCriteria.Op.EQ, TaggedResourceType.ISO); scTag.addAnd("tagResourceType", SearchCriteria.Op.EQ, ResourceObjectType.ISO);
} else { } else {
scTag.addAnd("tagResourceType", SearchCriteria.Op.EQ, TaggedResourceType.Template); scTag.addAnd("tagResourceType", SearchCriteria.Op.EQ, ResourceObjectType.Template);
} }
scc.addOr("tagKey", SearchCriteria.Op.SC, scTag); scc.addOr("tagKey", SearchCriteria.Op.SC, scTag);
count++; count++;
@ -3263,39 +3263,39 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
@Override @Override
public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd) { public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd) {
String key = cmd.getKey(); String key = cmd.getKey();
ResourceTag.TaggedResourceType resourceType = cmd.getResourceType(); ResourceTag.ResourceObjectType resourceType = cmd.getResourceType();
String resourceId = cmd.getResourceId(); String resourceId = cmd.getResourceId();
Long id = _taggedResourceMgr.getResourceId(resourceId, resourceType); long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
List<ResourceDetailResponse> responseList = new ArrayList<ResourceDetailResponse>(); List<ResourceDetailResponse> responseList = new ArrayList<ResourceDetailResponse>();
List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>(); List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>();
ResourceDetail requestedDetail = null; ResourceDetail requestedDetail = null;
if (resourceType == ResourceTag.TaggedResourceType.Volume) { if (resourceType == ResourceTag.ResourceObjectType.Volume) {
if (key == null) { if (key == null) {
detailList = _volumeDetailDao.findDetails(id); detailList = _volumeDetailDao.findDetails(id);
} else { } else {
requestedDetail = _volumeDetailDao.findDetail(id, key); requestedDetail = _volumeDetailDao.findDetail(id, key);
} }
} else if (resourceType == ResourceTag.TaggedResourceType.Nic){ } else if (resourceType == ResourceTag.ResourceObjectType.Nic){
if (key == null) { if (key == null) {
detailList = _nicDetailDao.findDetails(id); detailList = _nicDetailDao.findDetails(id);
} else { } else {
requestedDetail = _nicDetailDao.findDetail(id, key); requestedDetail = _nicDetailDao.findDetail(id, key);
} }
} else if (resourceType == ResourceTag.TaggedResourceType.UserVm){ } else if (resourceType == ResourceTag.ResourceObjectType.UserVm){
if (key == null) { if (key == null) {
detailList = _userVmDetailDao.findDetailsList(id); detailList = _userVmDetailDao.findDetailsList(id);
} else { } else {
requestedDetail = _userVmDetailDao.findDetail(id, key); requestedDetail = _userVmDetailDao.findDetail(id, key);
} }
} else if (resourceType == ResourceTag.TaggedResourceType.Zone){ } else if (resourceType == ResourceTag.ResourceObjectType.Zone){
if (key == null) { if (key == null) {
detailList = _dcDetailsDao.findDetailsList(id); detailList = _dcDetailsDao.findDetailsList(id);
} else { } else {
requestedDetail = _dcDetailsDao.findDetail(id, key); requestedDetail = _dcDetailsDao.findDetail(id, key);
} }
} else if (resourceType == TaggedResourceType.Network){ } else if (resourceType == ResourceObjectType.Network){
if (key == null) { if (key == null) {
detailList = _networkDetailsDao.findDetails(id); detailList = _networkDetailsDao.findDetails(id);
} else { } else {
@ -3321,7 +3321,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
} }
protected ResourceDetailResponse createResourceDetailsResponse(long resourceId, String key, String value, ResourceTag.TaggedResourceType type) { protected ResourceDetailResponse createResourceDetailsResponse(long resourceId, String key, String value, ResourceTag.ResourceObjectType type) {
ResourceDetailResponse resourceDetailResponse = new ResourceDetailResponse(); ResourceDetailResponse resourceDetailResponse = new ResourceDetailResponse();
resourceDetailResponse.setResourceId(String.valueOf(resourceId)); resourceDetailResponse.setResourceId(String.valueOf(resourceId));
resourceDetailResponse.setName(key); resourceDetailResponse.setName(key);

View File

@ -31,7 +31,7 @@ import com.cloud.api.ApiResponseHelper;
import com.cloud.api.query.vo.DataCenterJoinVO; import com.cloud.api.query.vo.DataCenterJoinVO;
import com.cloud.api.query.vo.ResourceTagJoinVO; import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchBuilder;
@ -99,7 +99,7 @@ public class DataCenterJoinDaoImpl extends GenericDaoBase<DataCenterJoinVO, Long
zoneResponse.setDhcpProvider(dataCenter.getDhcpProvider()); zoneResponse.setDhcpProvider(dataCenter.getDhcpProvider());
// update tag information // update tag information
List<ResourceTagJoinVO> resourceTags = ApiDBUtils.listResourceTagViewByResourceUUID(dataCenter.getUuid(), TaggedResourceType.Zone); List<ResourceTagJoinVO> resourceTags = ApiDBUtils.listResourceTagViewByResourceUUID(dataCenter.getUuid(), ResourceObjectType.Zone);
for (ResourceTagJoinVO resourceTag : resourceTags) { for (ResourceTagJoinVO resourceTag : resourceTags) {
ResourceTagResponse tagResponse = ApiDBUtils.newResourceTagResponse(resourceTag, false); ResourceTagResponse tagResponse = ApiDBUtils.newResourceTagResponse(resourceTag, false);
zoneResponse.addTag(tagResponse); zoneResponse.addTag(tagResponse);

View File

@ -22,7 +22,7 @@ import org.apache.cloudstack.api.response.ResourceTagResponse;
import com.cloud.api.query.vo.ResourceTagJoinVO; import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.GenericDao;
public interface ResourceTagJoinDao extends GenericDao<ResourceTagJoinVO, Long> { public interface ResourceTagJoinDao extends GenericDao<ResourceTagJoinVO, Long> {
@ -33,5 +33,5 @@ public interface ResourceTagJoinDao extends GenericDao<ResourceTagJoinVO, Long>
List<ResourceTagJoinVO> searchByIds(Long... ids); List<ResourceTagJoinVO> searchByIds(Long... ids);
List<ResourceTagJoinVO> listBy(String resourceUUID, TaggedResourceType resourceType); List<ResourceTagJoinVO> listBy(String resourceUUID, ResourceObjectType resourceType);
} }

View File

@ -30,7 +30,7 @@ import org.springframework.stereotype.Component;
import com.cloud.api.ApiResponseHelper; import com.cloud.api.ApiResponseHelper;
import com.cloud.api.query.vo.ResourceTagJoinVO; import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria;
@ -95,7 +95,7 @@ public class ResourceTagJoinDaoImpl extends GenericDaoBase<ResourceTagJoinVO, Lo
@Override @Override
public List<ResourceTagJoinVO> listBy(String resourceUUID, TaggedResourceType resourceType) { public List<ResourceTagJoinVO> listBy(String resourceUUID, ResourceObjectType resourceType) {
SearchCriteria<ResourceTagJoinVO> sc = AllFieldsSearch.create(); SearchCriteria<ResourceTagJoinVO> sc = AllFieldsSearch.create();
sc.setParameters("uuid", resourceUUID); sc.setParameters("uuid", resourceUUID);
sc.setParameters("resourceType", resourceType); sc.setParameters("resourceType", resourceType);

View File

@ -20,16 +20,13 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import org.apache.cloudstack.api.response.ResourceTagResponse;
import org.apache.cloudstack.api.response.ServiceOfferingResponse; import org.apache.cloudstack.api.response.ServiceOfferingResponse;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiDBUtils;
import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.api.query.vo.ServiceOfferingJoinVO; import com.cloud.api.query.vo.ServiceOfferingJoinVO;
import com.cloud.offering.ServiceOffering; import com.cloud.offering.ServiceOffering;
import com.cloud.server.ResourceTag.TaggedResourceType;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria;
@ -85,13 +82,6 @@ public class ServiceOfferingJoinDaoImpl extends GenericDaoBase<ServiceOfferingJo
offeringResponse.setDetails(ApiDBUtils.getServiceOfferingDetails(offering.getId())); offeringResponse.setDetails(ApiDBUtils.getServiceOfferingDetails(offering.getId()));
offeringResponse.setObjectName("serviceoffering"); offeringResponse.setObjectName("serviceoffering");
// update tag information
List<ResourceTagJoinVO> resourceTags = ApiDBUtils.listResourceTagViewByResourceUUID(offering.getUuid(), TaggedResourceType.ServiceOffering);
for (ResourceTagJoinVO resourceTag : resourceTags) {
ResourceTagResponse tagResponse = ApiDBUtils.newResourceTagResponse(resourceTag, false);
offeringResponse.addTag(tagResponse);
}
return offeringResponse; return offeringResponse;
} }

View File

@ -29,7 +29,7 @@ import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity; import org.apache.cloudstack.api.InternalIdentity;
import com.cloud.projects.Project.State; import com.cloud.projects.Project.State;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.GenericDao;
@Entity @Entity
@ -103,7 +103,7 @@ public class ProjectJoinVO extends BaseViewVO implements InternalIdentity, Ident
@Column(name="tag_resource_type") @Column(name="tag_resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType tagResourceType; private ResourceObjectType tagResourceType;
@Column(name="tag_customer") @Column(name="tag_customer")
private String tagCustomer; private String tagCustomer;
@ -196,7 +196,7 @@ public class ProjectJoinVO extends BaseViewVO implements InternalIdentity, Ident
return tagResourceUuid; return tagResourceUuid;
} }
public TaggedResourceType getTagResourceType() { public ResourceObjectType getTagResourceType() {
return tagResourceType; return tagResourceType;
} }

View File

@ -23,7 +23,7 @@ import javax.persistence.Enumerated;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
@Entity @Entity
@Table(name="resource_tag_view") @Table(name="resource_tag_view")
@ -50,7 +50,7 @@ public class ResourceTagJoinVO extends BaseViewVO implements ControlledViewEntit
@Column(name="resource_type") @Column(name="resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType resourceType; private ResourceObjectType resourceType;
@Column(name="customer") @Column(name="customer")
String customer; String customer;
@ -171,7 +171,7 @@ public class ResourceTagJoinVO extends BaseViewVO implements ControlledViewEntit
return resourceUuid; return resourceUuid;
} }
public TaggedResourceType getResourceType() { public ResourceObjectType getResourceType() {
return resourceType; return resourceType;
} }

View File

@ -24,7 +24,7 @@ import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import com.cloud.network.security.SecurityRule.SecurityRuleType; import com.cloud.network.security.SecurityRule.SecurityRuleType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
@Entity @Entity
@Table(name="security_group_view") @Table(name="security_group_view")
@ -135,7 +135,7 @@ public class SecurityGroupJoinVO extends BaseViewVO implements ControlledViewEnt
@Column(name="tag_resource_type") @Column(name="tag_resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType tagResourceType; private ResourceObjectType tagResourceType;
@Column(name="tag_customer") @Column(name="tag_customer")
private String tagCustomer; private String tagCustomer;
@ -295,7 +295,7 @@ public class SecurityGroupJoinVO extends BaseViewVO implements ControlledViewEnt
return tagResourceUuid; return tagResourceUuid;
} }
public TaggedResourceType getTagResourceType() { public ResourceObjectType getTagResourceType() {
return tagResourceType; return tagResourceType;
} }

View File

@ -30,7 +30,7 @@ import javax.persistence.TemporalType;
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.ScopeType; import com.cloud.storage.ScopeType;
import com.cloud.storage.Storage; import com.cloud.storage.Storage;
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
@ -238,7 +238,7 @@ public class TemplateJoinVO extends BaseViewVO implements ControlledViewEntity {
@Column(name="tag_resource_type") @Column(name="tag_resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType tagResourceType; private ResourceObjectType tagResourceType;
@Column(name="tag_customer") @Column(name="tag_customer")
private String tagCustomer; private String tagCustomer;
@ -369,7 +369,7 @@ public class TemplateJoinVO extends BaseViewVO implements ControlledViewEntity {
return tagResourceUuid; return tagResourceUuid;
} }
public TaggedResourceType getTagResourceType() { public ResourceObjectType getTagResourceType() {
return tagResourceType; return tagResourceType;
} }

View File

@ -31,7 +31,7 @@ import javax.persistence.Transient;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.Storage.StoragePoolType; import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.Volume; import com.cloud.storage.Volume;
import com.cloud.utils.db.Encrypt; import com.cloud.utils.db.Encrypt;
@ -366,7 +366,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
@Column(name="tag_resource_type") @Column(name="tag_resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType tagResourceType; private ResourceObjectType tagResourceType;
@Column(name="tag_customer") @Column(name="tag_customer")
private String tagCustomer; private String tagCustomer;
@ -798,7 +798,7 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
return tagResourceUuid; return tagResourceUuid;
} }
public TaggedResourceType getTagResourceType() { public ResourceObjectType getTagResourceType() {
return tagResourceType; return tagResourceType;
} }

View File

@ -26,7 +26,7 @@ import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.Storage; import com.cloud.storage.Storage;
import com.cloud.storage.Volume; import com.cloud.storage.Volume;
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
@ -255,7 +255,7 @@ public class VolumeJoinVO extends BaseViewVO implements ControlledViewEntity {
@Column(name="tag_resource_type") @Column(name="tag_resource_type")
@Enumerated(value=EnumType.STRING) @Enumerated(value=EnumType.STRING)
private TaggedResourceType tagResourceType; private ResourceObjectType tagResourceType;
@Column(name="tag_customer") @Column(name="tag_customer")
private String tagCustomer; private String tagCustomer;
@ -649,7 +649,7 @@ public class VolumeJoinVO extends BaseViewVO implements ControlledViewEntity {
public TaggedResourceType getTagResourceType() { public ResourceObjectType getTagResourceType() {
return tagResourceType; return tagResourceType;
} }

View File

@ -16,7 +16,6 @@
// under the License. // under the License.
package com.cloud.metadata; package com.cloud.metadata;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.ejb.Local; import javax.ejb.Local;
@ -26,112 +25,43 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.api.query.dao.ResourceTagJoinDao;
import com.cloud.dc.DcDetailVO; import com.cloud.dc.DcDetailVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.DcDetailsDao; import com.cloud.dc.dao.DcDetailsDao;
import com.cloud.event.ActionEvent; import com.cloud.event.ActionEvent;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.LoadBalancerDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.NetworkDetailVO; import com.cloud.network.dao.NetworkDetailVO;
import com.cloud.network.dao.NetworkDetailsDao; import com.cloud.network.dao.NetworkDetailsDao;
import com.cloud.network.dao.RemoteAccessVpnDao;
import com.cloud.network.rules.dao.PortForwardingRulesDao;
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.ResourceMetaDataService;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.ResourceTag.TaggedResourceType;
import com.cloud.server.TaggedResourceService; import com.cloud.server.TaggedResourceService;
import com.cloud.service.ServiceOfferingDetailsVO;
import com.cloud.service.dao.ServiceOfferingDetailsDao;
import com.cloud.storage.VolumeDetailVO; import com.cloud.storage.VolumeDetailVO;
import com.cloud.storage.dao.SnapshotDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VMTemplateDetailsDao; import com.cloud.storage.dao.VMTemplateDetailsDao;
import com.cloud.storage.dao.VolumeDao;
import com.cloud.storage.dao.VolumeDetailsDao; import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.AccountManager;
import com.cloud.user.DomainManager;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDao;
import com.cloud.utils.db.Transaction; import com.cloud.utils.db.Transaction;
import com.cloud.utils.db.TransactionCallback; import com.cloud.utils.db.TransactionCallback;
import com.cloud.utils.db.TransactionStatus; import com.cloud.utils.db.TransactionStatus;
import com.cloud.uuididentity.dao.IdentityDao; import com.cloud.uuididentity.dao.IdentityDao;
import com.cloud.vm.NicDetailVO; import com.cloud.vm.NicDetailVO;
import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.NicDetailDao; import com.cloud.vm.dao.NicDetailDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.UserVmDetailsDao; import com.cloud.vm.dao.UserVmDetailsDao;
import com.cloud.vm.snapshot.dao.VMSnapshotDao;
@Component @Component
@Local(value = { ResourceMetaDataService.class, ResourceMetaDataManager.class }) @Local(value = { ResourceMetaDataService.class, ResourceMetaDataManager.class })
public class ResourceMetaDataManagerImpl extends ManagerBase implements ResourceMetaDataService, ResourceMetaDataManager { public class ResourceMetaDataManagerImpl extends ManagerBase implements ResourceMetaDataService, ResourceMetaDataManager {
public static final Logger s_logger = Logger.getLogger(ResourceMetaDataManagerImpl.class); public static final Logger s_logger = Logger.getLogger(ResourceMetaDataManagerImpl.class);
private static Map<TaggedResourceType, GenericDao<?, Long>> _daoMap=
new HashMap<TaggedResourceType, GenericDao<?, Long>>();
@Inject @Inject
AccountManager _accountMgr; VolumeDetailsDao _volumeDetailDao;
@Inject
ResourceTagDao _resourceTagDao;
@Inject
ResourceTagJoinDao _resourceTagJoinDao;
@Inject
IdentityDao _identityDao;
@Inject
DomainManager _domainMgr;
@Inject
UserVmDao _userVmDao;
@Inject
VolumeDao _volumeDao;
@Inject
VMTemplateDao _templateDao;
@Inject
SnapshotDao _snapshotDao;
@Inject
NetworkDao _networkDao;
@Inject
DataCenterDao _dataCenterDao;
@Inject
LoadBalancerDao _lbDao;
@Inject
PortForwardingRulesDao _pfDao;
@Inject
FirewallRulesDao _firewallDao;
@Inject
SecurityGroupDao _securityGroupDao;
@Inject
RemoteAccessVpnDao _vpnDao;
@Inject
IPAddressDao _publicIpDao;
@Inject
ProjectDao _projectDao;
@Inject
VpcDao _vpcDao;
@Inject
StaticRouteDao _staticRouteDao;
@Inject
VMSnapshotDao _vmSnapshotDao;
@Inject
protected VolumeDetailsDao _volumeDetailDao;
@Inject @Inject
NicDetailDao _nicDetailDao; NicDetailDao _nicDetailDao;
@Inject @Inject
UserVmDetailsDao _userVmDetailDao; UserVmDetailsDao _userVmDetailDao;
@Inject @Inject
NicDao _nicDao;
@Inject
DcDetailsDao _dcDetailsDao; DcDetailsDao _dcDetailsDao;
@Inject @Inject
NetworkDetailsDao _networkDetailsDao; NetworkDetailsDao _networkDetailsDao;
@ -141,29 +71,12 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
VMTemplateDetailsDao _templateDetailsDao; VMTemplateDetailsDao _templateDetailsDao;
@Inject @Inject
UserVmDetailsDao _userVmDetailsDao; UserVmDetailsDao _userVmDetailsDao;
@Inject
ServiceOfferingDetailsDao _serviceOfferingDetailsDao;
@Override @Override
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
_daoMap.put(TaggedResourceType.UserVm, _userVmDao);
_daoMap.put(TaggedResourceType.Volume, _volumeDao);
_daoMap.put(TaggedResourceType.Template, _templateDao);
_daoMap.put(TaggedResourceType.ISO, _templateDao);
_daoMap.put(TaggedResourceType.Snapshot, _snapshotDao);
_daoMap.put(TaggedResourceType.Network, _networkDao);
_daoMap.put(TaggedResourceType.LoadBalancer, _lbDao);
_daoMap.put(TaggedResourceType.PortForwardingRule, _pfDao);
_daoMap.put(TaggedResourceType.FirewallRule, _firewallDao);
_daoMap.put(TaggedResourceType.SecurityGroup, _securityGroupDao);
_daoMap.put(TaggedResourceType.PublicIpAddress, _publicIpDao);
_daoMap.put(TaggedResourceType.Project, _projectDao);
_daoMap.put(TaggedResourceType.Vpc, _vpcDao);
_daoMap.put(TaggedResourceType.NetworkACL, _firewallDao);
_daoMap.put(TaggedResourceType.Nic, _nicDao);
_daoMap.put(TaggedResourceType.StaticRoute, _staticRouteDao);
_daoMap.put(TaggedResourceType.VMSnapshot, _vmSnapshotDao);
_daoMap.put(TaggedResourceType.RemoteAccessVpn, _vpnDao);
_daoMap.put(TaggedResourceType.Zone, _dataCenterDao);
return true; return true;
} }
@ -178,63 +91,48 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
} }
@Override
public TaggedResourceType getResourceType(String resourceTypeStr) {
for (TaggedResourceType type : ResourceTag.TaggedResourceType.values()) {
if (type.toString().equalsIgnoreCase(resourceTypeStr)) {
return type;
}
}
throw new InvalidParameterValueException("Invalid resource type " + resourceTypeStr);
}
@Override @Override
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_RESOURCE_DETAILS_CREATE, eventDescription = "creating resource meta data") @ActionEvent(eventType = EventTypes.EVENT_RESOURCE_DETAILS_CREATE, eventDescription = "creating resource meta data")
public boolean addResourceMetaData(final String resourceId, final TaggedResourceType resourceType, final Map<String, String> details){ public boolean addResourceMetaData(final String resourceId, final ResourceObjectType resourceType, final Map<String, String> details){
return Transaction.execute(new TransactionCallback<Boolean>() { return Transaction.execute(new TransactionCallback<Boolean>() {
@Override @Override
public Boolean doInTransaction(TransactionStatus status) { public Boolean doInTransaction(TransactionStatus status) {
for (String key : details.keySet()) { for (String key : details.keySet()) {
Long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
//check if object exists
if (_daoMap.get(resourceType).findById(id) == null) {
throw new InvalidParameterValueException("Unable to find resource by id " + resourceId +
" and type " + resourceType);
}
String value = details.get(key); String value = details.get(key);
if (value == null || value.isEmpty()) { if (value == null || value.isEmpty()) {
throw new InvalidParameterValueException("Value for the key " + key + " is either null or empty"); throw new InvalidParameterValueException("Value for the key " + key + " is either null or empty");
} }
// TODO - Have a better design here. if (!resourceType.resourceMetadataSupport()) {
if(resourceType == TaggedResourceType.Volume){ throw new InvalidParameterValueException("The resource type " + resourceType + " doesn't support metadata (resource details)");
VolumeDetailVO v = new VolumeDetailVO(id, key, value);
_volumeDetailDao.persist(v);
} else if (resourceType == TaggedResourceType.Nic){
NicDetailVO n = new NicDetailVO(id, key, value);
_nicDetailDao.persist(n);
} else if (resourceType == TaggedResourceType.Zone){
DcDetailVO dataCenterDetail = new DcDetailVO(id, key, value);
_dcDetailsDao.persist(dataCenterDetail);
} else if (resourceType == TaggedResourceType.Network){
NetworkDetailVO networkDetail = new NetworkDetailVO(id, key, value);
_networkDetailsDao.persist(networkDetail);
} else if (resourceType == TaggedResourceType.UserVm) {
_userVmDetailsDao.addVmDetail(id, key, value);
} else if (resourceType == TaggedResourceType.Template) {
_templateDetailsDao.addTemplateDetail(id, key, value);
} else{
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
} }
long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
// TODO - Have a better design here.
if(resourceType == ResourceObjectType.Volume){
VolumeDetailVO v = new VolumeDetailVO(id, key, value);
_volumeDetailDao.persist(v);
} else if (resourceType == ResourceObjectType.Nic){
NicDetailVO n = new NicDetailVO(id, key, value);
_nicDetailDao.persist(n);
} else if (resourceType == ResourceObjectType.Zone){
DcDetailVO dataCenterDetail = new DcDetailVO(id, key, value);
_dcDetailsDao.persist(dataCenterDetail);
} else if (resourceType == ResourceObjectType.Network){
NetworkDetailVO networkDetail = new NetworkDetailVO(id, key, value);
_networkDetailsDao.persist(networkDetail);
} else if (resourceType == ResourceObjectType.UserVm) {
_userVmDetailsDao.addVmDetail(id, key, value);
} else if (resourceType == ResourceObjectType.Template) {
_templateDetailsDao.addTemplateDetail(id, key, value);
} else if (resourceType == ResourceObjectType.ServiceOffering) {
ServiceOfferingDetailsVO entity = new ServiceOfferingDetailsVO(id, key, value);
_serviceOfferingDetailsDao.persist(entity);
} }
}
return true; return true;
} }
@ -245,24 +143,27 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
@Override @Override
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_RESOURCE_DETAILS_DELETE, eventDescription = "deleting resource meta data") @ActionEvent(eventType = EventTypes.EVENT_RESOURCE_DETAILS_DELETE, eventDescription = "deleting resource meta data")
public boolean deleteResourceMetaData(String resourceId, TaggedResourceType resourceType, String key){ public boolean deleteResourceMetaData(String resourceId, ResourceObjectType resourceType, String key){
Long id = _taggedResourceMgr.getResourceId(resourceId, resourceType); long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
// TODO - Have a better design here.
if(resourceType == TaggedResourceType.Volume){ if (!resourceType.resourceMetadataSupport()) {
_volumeDetailDao.removeDetails(id, key);
} else if(resourceType == TaggedResourceType.Nic){
_nicDetailDao.removeDetails(id, key);
} else if(resourceType == TaggedResourceType.UserVm){
_userVmDetailDao.removeDetails(id, key);
} else if (resourceType == TaggedResourceType.Zone){
_dcDetailsDao.removeDetails(id, key);
} else if (resourceType == TaggedResourceType.Network){
_networkDetailsDao.removeDetails(id, key);
} else{
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet"); throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
} }
// TODO - Have a better design here.
if(resourceType == ResourceObjectType.Volume){
_volumeDetailDao.removeDetails(id, key);
} else if(resourceType == ResourceObjectType.Nic){
_nicDetailDao.removeDetails(id, key);
} else if(resourceType == ResourceObjectType.UserVm){
_userVmDetailDao.removeDetails(id, key);
} else if (resourceType == ResourceObjectType.Zone){
_dcDetailsDao.removeDetails(id, key);
} else if (resourceType == ResourceObjectType.Network){
_networkDetailsDao.removeDetails(id, key);
}
return true; return true;
} }

View File

@ -136,7 +136,7 @@ import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
import com.cloud.org.Grouping; import com.cloud.org.Grouping;
import com.cloud.projects.Project; import com.cloud.projects.Project;
import com.cloud.projects.ProjectManager; import com.cloud.projects.ProjectManager;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -1671,7 +1671,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.Network.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.Network.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -74,7 +74,7 @@ import com.cloud.network.rules.StaticNat;
import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.network.rules.dao.PortForwardingRulesDao;
import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.VpcManager;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -308,7 +308,7 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.FirewallRule.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.FirewallRule.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -130,7 +130,7 @@ import com.cloud.network.rules.StickinessPolicy;
import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.VpcManager;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
@ -2055,7 +2055,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.LoadBalancer.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.LoadBalancer.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -59,7 +59,7 @@ import com.cloud.network.vpc.VpcManager;
import com.cloud.network.vpc.VpcService; import com.cloud.network.vpc.VpcService;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -831,7 +831,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.PortForwardingRule.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.PortForwardingRule.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -43,7 +43,7 @@ import com.cloud.network.dao.NetworkVO;
import com.cloud.network.vpc.dao.NetworkACLDao; import com.cloud.network.vpc.dao.NetworkACLDao;
import com.cloud.network.vpc.dao.VpcGatewayDao; import com.cloud.network.vpc.dao.VpcGatewayDao;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -484,7 +484,7 @@ public class NetworkACLServiceImpl extends ManagerBase implements NetworkACLServ
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.NetworkACL.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.NetworkACL.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -99,7 +99,7 @@ import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
import com.cloud.org.Grouping; import com.cloud.org.Grouping;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ConfigurationServer; import com.cloud.server.ConfigurationServer;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -875,7 +875,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.Vpc.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.Vpc.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));
@ -1918,7 +1918,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.StaticRoute.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.StaticRoute.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -518,7 +518,7 @@ import com.cloud.projects.Project;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.projects.ProjectManager; import com.cloud.projects.ProjectManager;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.auth.UserAuthenticator; import com.cloud.server.auth.UserAuthenticator;
import com.cloud.storage.DiskOfferingVO; import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.GuestOS; import com.cloud.storage.GuestOS;
@ -1998,7 +1998,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.PublicIpAddress.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.PublicIpAddress.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -81,7 +81,7 @@ import com.cloud.host.HostVO;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceManager;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.storage.CreateSnapshotPayload; import com.cloud.storage.CreateSnapshotPayload;
import com.cloud.storage.DataStoreRole; import com.cloud.storage.DataStoreRole;
import com.cloud.storage.ScopeType; import com.cloud.storage.ScopeType;
@ -609,7 +609,7 @@ public class SnapshotManagerImpl extends ManagerBase implements SnapshotManager,
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.Snapshot.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.Snapshot.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -48,7 +48,7 @@ import com.cloud.network.vpc.dao.StaticRouteDao;
import com.cloud.network.vpc.dao.VpcDao; import com.cloud.network.vpc.dao.VpcDao;
import com.cloud.projects.dao.ProjectDao; import com.cloud.projects.dao.ProjectDao;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.server.TaggedResourceService; import com.cloud.server.TaggedResourceService;
import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.dao.SnapshotDao; import com.cloud.storage.dao.SnapshotDao;
@ -80,8 +80,8 @@ import com.cloud.vm.snapshot.dao.VMSnapshotDao;
public class TaggedResourceManagerImpl extends ManagerBase implements TaggedResourceService { public class TaggedResourceManagerImpl extends ManagerBase implements TaggedResourceService {
public static final Logger s_logger = Logger.getLogger(TaggedResourceManagerImpl.class); public static final Logger s_logger = Logger.getLogger(TaggedResourceManagerImpl.class);
private static Map<TaggedResourceType, GenericDao<?, Long>> _daoMap= private static Map<ResourceObjectType, GenericDao<?, Long>> _daoMap=
new HashMap<TaggedResourceType, GenericDao<?, Long>>(); new HashMap<ResourceObjectType, GenericDao<?, Long>>();
@Inject @Inject
AccountManager _accountMgr; AccountManager _accountMgr;
@ -135,26 +135,26 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
@Override @Override
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
_daoMap.put(TaggedResourceType.UserVm, _userVmDao); _daoMap.put(ResourceObjectType.UserVm, _userVmDao);
_daoMap.put(TaggedResourceType.Volume, _volumeDao); _daoMap.put(ResourceObjectType.Volume, _volumeDao);
_daoMap.put(TaggedResourceType.Template, _templateDao); _daoMap.put(ResourceObjectType.Template, _templateDao);
_daoMap.put(TaggedResourceType.ISO, _templateDao); _daoMap.put(ResourceObjectType.ISO, _templateDao);
_daoMap.put(TaggedResourceType.Snapshot, _snapshotDao); _daoMap.put(ResourceObjectType.Snapshot, _snapshotDao);
_daoMap.put(TaggedResourceType.Network, _networkDao); _daoMap.put(ResourceObjectType.Network, _networkDao);
_daoMap.put(TaggedResourceType.LoadBalancer, _lbDao); _daoMap.put(ResourceObjectType.LoadBalancer, _lbDao);
_daoMap.put(TaggedResourceType.PortForwardingRule, _pfDao); _daoMap.put(ResourceObjectType.PortForwardingRule, _pfDao);
_daoMap.put(TaggedResourceType.FirewallRule, _firewallDao); _daoMap.put(ResourceObjectType.FirewallRule, _firewallDao);
_daoMap.put(TaggedResourceType.SecurityGroup, _securityGroupDao); _daoMap.put(ResourceObjectType.SecurityGroup, _securityGroupDao);
_daoMap.put(TaggedResourceType.PublicIpAddress, _publicIpDao); _daoMap.put(ResourceObjectType.PublicIpAddress, _publicIpDao);
_daoMap.put(TaggedResourceType.Project, _projectDao); _daoMap.put(ResourceObjectType.Project, _projectDao);
_daoMap.put(TaggedResourceType.Vpc, _vpcDao); _daoMap.put(ResourceObjectType.Vpc, _vpcDao);
_daoMap.put(TaggedResourceType.Nic, _nicDao); _daoMap.put(ResourceObjectType.Nic, _nicDao);
_daoMap.put(TaggedResourceType.NetworkACL, _networkACLItemDao); _daoMap.put(ResourceObjectType.NetworkACL, _networkACLItemDao);
_daoMap.put(TaggedResourceType.StaticRoute, _staticRouteDao); _daoMap.put(ResourceObjectType.StaticRoute, _staticRouteDao);
_daoMap.put(TaggedResourceType.VMSnapshot, _vmSnapshotDao); _daoMap.put(ResourceObjectType.VMSnapshot, _vmSnapshotDao);
_daoMap.put(TaggedResourceType.RemoteAccessVpn, _vpnDao); _daoMap.put(ResourceObjectType.RemoteAccessVpn, _vpnDao);
_daoMap.put(TaggedResourceType.Zone, _dataCenterDao); _daoMap.put(ResourceObjectType.Zone, _dataCenterDao);
_daoMap.put(TaggedResourceType.ServiceOffering, _serviceOffDao); _daoMap.put(ResourceObjectType.ServiceOffering, _serviceOffDao);
return true; return true;
} }
@ -170,7 +170,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
} }
@Override @Override
public Long getResourceId(String resourceId, TaggedResourceType resourceType) { public long getResourceId(String resourceId, ResourceObjectType resourceType) {
GenericDao<?, Long> dao = _daoMap.get(resourceType); GenericDao<?, Long> dao = _daoMap.get(resourceType);
if (dao == null) { if (dao == null) {
throw new CloudRuntimeException("Dao is not loaded for the resource type " + resourceType); throw new CloudRuntimeException("Dao is not loaded for the resource type " + resourceType);
@ -201,13 +201,8 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
return identityId; return identityId;
} }
protected String getTableName(TaggedResourceType resourceType) {
GenericDao<?, Long> dao = _daoMap.get(resourceType);
Class<?> claz = DbUtil.getEntityBeanType(dao);
return DbUtil.getTableName(claz);
}
private Pair<Long, Long> getAccountDomain(long resourceId, TaggedResourceType resourceType) { private Pair<Long, Long> getAccountDomain(long resourceId, ResourceObjectType resourceType) {
Pair<Long, Long> pair = null; Pair<Long, Long> pair = null;
GenericDao<?, Long> dao = _daoMap.get(resourceType); GenericDao<?, Long> dao = _daoMap.get(resourceType);
@ -243,9 +238,9 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
} }
@Override @Override
public TaggedResourceType getResourceType(String resourceTypeStr) { public ResourceObjectType getResourceType(String resourceTypeStr) {
for (TaggedResourceType type : ResourceTag.TaggedResourceType.values()) { for (ResourceObjectType type : ResourceTag.ResourceObjectType.values()) {
if (type.toString().equalsIgnoreCase(resourceTypeStr)) { if (type.toString().equalsIgnoreCase(resourceTypeStr)) {
return type; return type;
} }
@ -256,7 +251,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
@Override @Override
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_TAGS_CREATE, eventDescription = "creating resource tags") @ActionEvent(eventType = EventTypes.EVENT_TAGS_CREATE, eventDescription = "creating resource tags")
public List<ResourceTag> createTags(final List<String> resourceIds, final TaggedResourceType resourceType, public List<ResourceTag> createTags(final List<String> resourceIds, final ResourceObjectType resourceType,
final Map<String, String> tags, final String customer) { final Map<String, String> tags, final String customer) {
final Account caller = CallContext.current().getCallingAccount(); final Account caller = CallContext.current().getCallingAccount();
@ -267,15 +262,13 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
public void doInTransactionWithoutResult(TransactionStatus status) { public void doInTransactionWithoutResult(TransactionStatus status) {
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
for (String resourceId : resourceIds) { for (String resourceId : resourceIds) {
Long id = getResourceId(resourceId, resourceType); if (!resourceType.resourceTagsSupport()) {
String resourceUuid = getUuid(resourceId, resourceType); throw new InvalidParameterValueException("The resource type " + resourceType + " doesn't support resource tags");
//check if object exists
if (_daoMap.get(resourceType).findById(id) == null) {
throw new InvalidParameterValueException("Unable to find resource by id " + resourceId +
" and type " + resourceType);
} }
long id = getResourceId(resourceId, resourceType);
String resourceUuid = getUuid(resourceId, resourceType);
Pair<Long, Long> accountDomainPair = getAccountDomain(id, resourceType); Pair<Long, Long> accountDomainPair = getAccountDomain(id, resourceType);
Long domainId = accountDomainPair.second(); Long domainId = accountDomainPair.second();
Long accountId = accountDomainPair.first(); Long accountId = accountDomainPair.first();
@ -308,8 +301,9 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
return resourceTags; return resourceTags;
} }
@Override @Override
public String getUuid(String resourceId, TaggedResourceType resourceType) { public String getUuid(String resourceId, ResourceObjectType resourceType) {
GenericDao<?, Long> dao = _daoMap.get(resourceType); GenericDao<?, Long> dao = _daoMap.get(resourceType);
Class<?> claz = DbUtil.getEntityBeanType(dao); Class<?> claz = DbUtil.getEntityBeanType(dao);
@ -341,7 +335,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
@Override @Override
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_TAGS_DELETE, eventDescription = "deleting resource tags") @ActionEvent(eventType = EventTypes.EVENT_TAGS_DELETE, eventDescription = "deleting resource tags")
public boolean deleteTags(List<String> resourceIds, TaggedResourceType resourceType, Map<String, String> tags) { public boolean deleteTags(List<String> resourceIds, ResourceObjectType resourceType, Map<String, String> tags) {
Account caller = CallContext.current().getCallingAccount(); Account caller = CallContext.current().getCallingAccount();
SearchBuilder<ResourceTagVO> sb = _resourceTagDao.createSearchBuilder(); SearchBuilder<ResourceTagVO> sb = _resourceTagDao.createSearchBuilder();
@ -407,7 +401,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
@Override @Override
public List<? extends ResourceTag> listByResourceTypeAndId(TaggedResourceType type, long resourceId) { public List<? extends ResourceTag> listByResourceTypeAndId(ResourceObjectType type, long resourceId) {
return _resourceTagDao.listBy(resourceId, type); return _resourceTagDao.listBy(resourceId, type);
} }
} }

View File

@ -17,7 +17,7 @@
package com.cloud.uuididentity.dao; package com.cloud.uuididentity.dao;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.GenericDao;
@ -31,5 +31,5 @@ public interface IdentityDao extends GenericDao<IdentityVO, Long> {
* @param resourceType TODO * @param resourceType TODO
* @return * @return
*/ */
Pair<Long, Long> getAccountDomainInfo(String tableName, Long identityId, TaggedResourceType resourceType); Pair<Long, Long> getAccountDomainInfo(String tableName, Long identityId, ResourceObjectType resourceType);
} }

View File

@ -28,7 +28,7 @@ import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericDaoBase;
@ -97,7 +97,7 @@ public class IdentityDaoImpl extends GenericDaoBase<IdentityVO, Long> implements
@DB @DB
@Override @Override
public Pair<Long, Long> getAccountDomainInfo(String tableName, Long identityId, TaggedResourceType resourceType) { public Pair<Long, Long> getAccountDomainInfo(String tableName, Long identityId, ResourceObjectType resourceType) {
assert(tableName != null); assert(tableName != null);
PreparedStatement pstmt = null; PreparedStatement pstmt = null;
@ -121,7 +121,7 @@ public class IdentityDaoImpl extends GenericDaoBase<IdentityVO, Long> implements
//get accountId //get accountId
try { try {
String account = "account_id"; String account = "account_id";
if (resourceType == TaggedResourceType.Project) { if (resourceType == ResourceObjectType.Project) {
account = "project_account_id"; account = "project_account_id";
} }
pstmt = txn.prepareAutoCloseStatement(String.format("SELECT " + account + " FROM `%s` WHERE id=?", tableName)); pstmt = txn.prepareAutoCloseStatement(String.format("SELECT " + account + " FROM `%s` WHERE id=?", tableName));

View File

@ -57,7 +57,7 @@ import com.cloud.network.lb.LoadBalancingRulesService;
import com.cloud.network.rules.FirewallRule.State; import com.cloud.network.rules.FirewallRule.State;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.server.ResourceTag.ResourceObjectType;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao; import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.user.Account; import com.cloud.user.Account;
@ -459,7 +459,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
int count = 0; int count = 0;
sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.LoadBalancer.toString()); sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.LoadBalancer.toString());
for (String key : tags.keySet()) { for (String key : tags.keySet()) {
sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key); sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key)); sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));

View File

@ -17,42 +17,27 @@
package com.cloud.metadata; package com.cloud.metadata;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyFloat;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq; import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.cloud.server.TaggedResourceService; import javax.naming.ConfigurationException;
import com.cloud.utils.db.DB;
import com.cloud.vm.dao.NicDetailDao;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.command.user.vm.RestoreVMCmd;
import org.apache.cloudstack.api.command.user.vm.ScaleVMCmd;
import org.apache.commons.collections.map.HashedMap; import org.apache.commons.collections.map.HashedMap;
import org.junit.Before; import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.mockito.Spy; import org.mockito.Spy;
import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceAllocationException;
import com.cloud.metadata.ResourceMetaDataManager;
import com.cloud.metadata.ResourceMetaDataManagerImpl;
import com.cloud.server.ResourceTag; import com.cloud.server.ResourceTag;
import com.cloud.storage.Volume; import com.cloud.server.TaggedResourceService;
import com.cloud.storage.dao.VolumeDetailsDao; import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.user.dao.UserDao; import com.cloud.vm.dao.NicDetailDao;
import javax.naming.ConfigurationException;
public class ResourceMetaDataManagerTest { public class ResourceMetaDataManagerTest {
@ -88,12 +73,12 @@ public class ResourceMetaDataManagerTest {
//when(_resourceMetaDataMgr.getResourceId(anyString(), eq(ResourceTag.TaggedResourceType.Volume))).thenReturn(1L); //when(_resourceMetaDataMgr.getResourceId(anyString(), eq(ResourceTag.TaggedResourceType.Volume))).thenReturn(1L);
doReturn(1L).when(_taggedResourceMgr).getResourceId(anyString(), eq(ResourceTag.TaggedResourceType.Volume)); doReturn(1L).when(_taggedResourceMgr).getResourceId(anyString(), eq(ResourceTag.ResourceObjectType.Volume));
// _volumeDetailDao.removeDetails(id, key); // _volumeDetailDao.removeDetails(id, key);
doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString()); doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString());
doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString()); doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString());
_resourceMetaDataMgr.deleteResourceMetaData(anyString(), eq(ResourceTag.TaggedResourceType.Volume), anyString()); _resourceMetaDataMgr.deleteResourceMetaData(anyString(), eq(ResourceTag.ResourceObjectType.Volume), anyString());
} }
@ -103,14 +88,14 @@ public class ResourceMetaDataManagerTest {
doReturn(1L).when(_taggedResourceMgr).getResourceId("1", ResourceTag.TaggedResourceType.Volume); doReturn(1L).when(_taggedResourceMgr).getResourceId("1", ResourceTag.ResourceObjectType.Volume);
// _volumeDetailDao.removeDetails(id, key); // _volumeDetailDao.removeDetails(id, key);
doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString()); doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString());
doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString()); doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString());
Map<String, String> map = new HashedMap(); Map<String, String> map = new HashedMap();
map.put("key","value"); map.put("key","value");
_resourceMetaDataMgr.addResourceMetaData("1", ResourceTag.TaggedResourceType.Volume, map); _resourceMetaDataMgr.addResourceMetaData("1", ResourceTag.ResourceObjectType.Volume, map);
} }