Re: [patch] virt-convert add disk signature into virt-image format export

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




diff -r 58a909b4f71c virt-convert
--- a/virt-convert	Mon Sep 22 11:32:11 2008 -0400
+++ b/virt-convert	Wed Oct 01 17:12:45 2008 -0400
@@ -64,6 +64,8 @@
     opts.add_option("", "--os-variant", type="string", dest="os_variant",
                       action="callback", callback=cli.check_before_store,
                       help=("The OS variant for fully virtualized guests, e.g. 'fedora6', 'rhel5', 'solaris10', 'win2k', 'vista'"))
+    opts.add_option("", "--checksum", action="store_true", dest="checksum",
+                    help=("Generate a checksum for a virt-image guest"))
     opts.add_option("", "--noapic", action="store_true", dest="noapic",
         help=("Disables APIC for fully virtualized guest (overrides value in os-type/os-variant db)"), default=False)
     opts.add_option("", "--noacpi", action="store_true", dest="noacpi",
@@ -184,6 +186,9 @@
unixname = vmdef.name.replace(" ", "-") + if options.checksum:
+        vmdef.checksum = "yes"
+

Rather than use a string yes/no, why not just call
the variable 'use_checksum' and have it as a bool
value?

We probably also want to add an option like checksum_type, since it really isn't a simple
yes/no option. If no type is specified, we can
just whatever we deem is a sensible default.
This can be worked out later though.

I'll make that change for use_checksum. Would that mean we're only generating 1 checksum by default?

+
+        if vm.checksum == "yes":
+            md5checksum = None
+            shachecksum = None
+
+            storage.append("""<disk file="%s" use="system" format="%s">\n""" % (path, type))
+ + try:
+                import hashlib
+                m1 = hashlib.md5(path)
+                m2 = hashlib.sha256(path)
+            except:
+                import md5
+                m1 = md5.new(path)
+                m2 = None
+
+            f = open(path,"r")
+            while 1:
+                chunk = f.read(65536)
+                if not chunk:
+                    break
+                m1.update(chunk)
+
+                if m2:
+                   m2.update(chunk)
+

I tested the above, and it generates different checksums than
the cli utils (md5sum, sha256sum). Problem seems to be that
you initialize the hash with the file's pathname. Is that
intentional?

We should probably match the output of the cli utils, so
let's make sure the hashes match for both small and large
files to be sure we aren't missing anything.

I just discovered that this morning when working on the appliance-creator portions of this and just removed the filename out of the hash.

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux