[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-7362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14100656#comment-14100656
 ] 

ASF subversion and git services commented on CLOUDSTACK-7362:
-------------------------------------------------------------

Commit 838a1a8476cfb4308103b3797a281f843e208d38 in cloudstack's branch 
refs/heads/4.4 from [~weizhou]
[ https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;h=838a1a8 ]

CLOUDSTACK-7362: fix wrong uuid issue for resource tags


> Resource tagging sometimes tags the wrong resource
> --------------------------------------------------
>
>                 Key: CLOUDSTACK-7362
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-7362
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: API
>    Affects Versions: 4.4.1
>            Reporter: Stephen Hoogendijk
>
> This problem occurs when the uuid of the resource you are about to tag begins 
> with a number that actually corresponds to the id field of an entry in the 
> same resource type table.
> Example:
> We want to tag security group with UUID 6cb95038-6b76-4905-bdf5-85bf0e0eda51 
> which has ID #5. But we also have a security group with ID #6 and UUID 
> d582e52c-f3c1-4e12-8e86-9dad0a5bd725. What happens is the following:
> First it runs this method:
> {code:java}
> long id = getResourceId(resourceId, resourceType);
> {code}
> which actually tries to find the entity by its UUID and returns the resource 
> id (numeric). This process goes off without a hitch.
> Next, it actually tries to find the UUID of the resource (because you can 
> also send in the internal (numeric) identifier):
> {code:java}
> String resourceUuid = getUuid(resourceId, resourceType)
> {code}
> Now this is when the magic starts happening, this is what's happening inside 
> the method:
> {code:java}
> entity = _entityMgr.findById(clazz, resourceId);
>         if (entity != null && entity instanceof Identity) {
>             return ((Identity)entity).getUuid();
>        }
> {code}
> Because our resourceId starts with a numeric 6 the findById method somehow 
> returns the object that actually has the internal numeric identifier 6. Thus 
> it ends up tagging the wrong object.
> This issue can be resolved by changing the getUUID() method to:
> {code:java}
>     @Override
>     public String getUuid(String resourceId, ResourceObjectType resourceType) 
> {
>         Class<?> clazz = s_typeMap.get(resourceType);
>         Object entity = _entityMgr.findByUuid(clazz, resourceId);
>         if (entity != null) {
>             return ((Identity)entity).getUuid();
>         }
>         entity = _entityMgr.findById(clazz, resourceId);
>         if (entity != null && entity instanceof Identity) {
>             return ((Identity)entity).getUuid();
>         }
>         return resourceId;
>     }
> {code}
> What i would like to know is if this is a known issue or not? I couldn't find 
> a bug report here in Jira. If this is an unknown bug then i will go ahead and 
> submit the patch.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to