You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@vcl.apache.org by "Aaron Peeler (JIRA)" <ji...@apache.org> on 2012/09/21 14:38:08 UTC

[jira] [Commented] (VCL-630) currentimage.txt name may conflict with imagerevision name, causing unnecessary reloads

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

Aaron Peeler commented on VCL-630:
----------------------------------

I vote using the imagerevision_id. There are other areas where imagerevision_id would be best, such as in the healthcheck.pm, etc. I would also recommend to redo _getcurrentimage or create a new getcurrentimage routine that's not dependent on the Datastructure. I've almost started reworking that routine related to the healthcheck code. 
                
> currentimage.txt name may conflict with imagerevision name, causing unnecessary reloads
> ---------------------------------------------------------------------------------------
>
>                 Key: VCL-630
>                 URL: https://issues.apache.org/jira/browse/VCL-630
>             Project: VCL
>          Issue Type: Bug
>          Components: vcld (backend)
>    Affects Versions: 2.3
>         Environment: accessing the first revision of an image on a clustered (vCenter) VMware host. This only affects images whose name (cleaned of non-alphanumeric characters) exceeds 29 characters. 
>            Reporter: Aaron Coburn
>            Assignee: Aaron Coburn
>             Fix For: 2.4, 2.3.1
>
>
> A few words to provide some background: when the VCL uses a clustered (vCenter) VMware host, one cannot simply copy virtual disks as part of the image capture process; instead, the VM is cloned. This, however, exposed an apparently undocumented feature of VMware in that virtual disk names exceeding 29 characters are silently truncated. This creates significant problems for the VCL. The current solution (for 2.3) is to update the image name in the database after successfully capturing an image. This way, the VCL knows where to find the virtual disk in the VMware datastore.
> The problem with this approach is that this change isn't registered with the system until after the image has been captured. At this point, however, the currentimage.txt file has already been written to the disk and if the name changes ex post facto, then the problem simply re-emerges in a different form when a user makes a reservation for the image.
> Assuming the VM is available and otherwise ready to grant an immediate reservation, the reclaim.pm:process() subroutine checks the VM name listed in the currentimage.txt file and finds a conflict in the name listed on the OS and the name in the database.
> An immediate solution for users is to simply make a new revision of the same image. That second revision will have a shortened name in both currentimage.txt and the imagerevision table.
> There are two ways that this could be correctly solved in the perl code: either by updating the image name earlier in the provisioning module's capture() subroutine or by extracting other information from currentimage.txt, such as imagerevision_id.
> While the first approach would be easier to implement, the second approach seems to be more architecturally sound. That is, rather than relying on a comparison of two strings, the test would be between two integers, one of which is the primary key of the database table in question.
> Any thoughts on the best way to proceed?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira