You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by de...@apache.org on 2013/12/12 10:25:56 UTC
[2/2] git commit: updated refs/heads/master to ffd1a07
CLOUDSTACK-5462: Hyperv agent confused by existing volume of different
image type. Works by avoiding volume image format inference errors and
removing existing files with same name, but different format.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ffd1a078
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ffd1a078
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ffd1a078
Branch: refs/heads/master
Commit: ffd1a078d49cb8491e29a881970077c682fd1cb0
Parents: bdbc5f2
Author: Donal Lafferty <do...@citrix.com>
Authored: Thu Dec 12 21:31:14 2013 +0530
Committer: Devdeep Singh <de...@gmail.com>
Committed: Thu Dec 12 14:56:37 2013 +0530
----------------------------------------------------------------------
.../HypervResource/HypervResourceController.cs | 33 +++++++++++++-------
1 file changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ffd1a078/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
index 776c0fe..fe0df0f 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
@@ -1232,13 +1232,19 @@ namespace HypervResource
}
}
- // Already exists?
+ // Template already downloaded?
if (destFile != null && File.Exists(destFile) &&
!String.IsNullOrEmpty(destTemplateObjectTO.checksum))
{
// TODO: checksum fails us, because it is of the compressed image.
// ASK: should we store the compressed or uncompressed version or is the checksum not calculated correctly?
+ logger.Debug(CloudStackTypes.CopyCommand + " calling VerifyChecksum to see if we already have the file at " + destFile);
result = VerifyChecksum(destFile, destTemplateObjectTO.checksum);
+ if (!result)
+ {
+ result = true;
+ logger.Debug(CloudStackTypes.CopyCommand + " existing file has different checksum " + destFile);
+ }
}
// Do we have to create a new one?
@@ -1320,25 +1326,30 @@ namespace HypervResource
// Create volume from a template?
else if (srcTemplateObjectTO != null && destVolumeObjectTO != null)
{
- if (destVolumeObjectTO.format == null)
+ // VolumeObjectTO guesses file extension based on existing files
+ // this can be wrong if the previous file had a different file type
+ var guessedDestFile = destVolumeObjectTO.FullFileName;
+ if (File.Exists(guessedDestFile))
{
- destVolumeObjectTO.format = srcTemplateObjectTO.format;
+ logger.Info("Deleting existing file " + guessedDestFile);
+ File.Delete(guessedDestFile);
}
+
+ destVolumeObjectTO.format = srcTemplateObjectTO.format;
destFile = destVolumeObjectTO.FullFileName;
- string srcFile = srcTemplateObjectTO.FullFileName;
+ if (File.Exists(destFile))
+ {
+ logger.Info("Deleting existing file " + destFile);
+ File.Delete(destFile);
+ }
+ string srcFile = srcTemplateObjectTO.FullFileName;
if (!File.Exists(srcFile))
{
details = "Local template file missing from " + srcFile;
}
else
{
- if (File.Exists(destFile))
- {
- logger.Info("Deleting existing file " + destFile);
- File.Delete(destFile);
- }
-
// TODO: thin provision instead of copying the full file.
File.Copy(srcFile, destFile);
newData = cmd.destTO;
@@ -1377,7 +1388,7 @@ namespace HypervResource
{
return true;
}
- return true;
+ return false;
}
/// <summary>