From c08e59bef65f29e6372b39e5a2f8cda534889a81 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Fri, 16 Jul 2010 20:49:38 +0000 Subject: [PATCH] -Add UUIDv5 generation with URL to the UUID generation function (for use in libvirt storage pool creation) git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6782 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- perl-xCAT/xCAT/Utils.pm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/perl-xCAT/xCAT/Utils.pm b/perl-xCAT/xCAT/Utils.pm index abe1e628f..56ecb8bd8 100644 --- a/perl-xCAT/xCAT/Utils.pm +++ b/perl-xCAT/xCAT/Utils.pm @@ -105,6 +105,21 @@ sub genUUID $mac = lc($mac); $uuid .= $mac; return $uuid; + } elsif ($args{url}) { #generate a UUIDv5 from URL + #6ba7b810-9dad-11d1-80b4-00c04fd430c8 is the uuid for URL namespace + my $sum = sha1('6ba7b810-9dad-11d1-80b4-00c04fd430c8'.$args{url}); + my @data = unpack("C*",$sum); + splice @data,16; + $data[6] = $data[6] & 0xf; + $data[6] = $data[6] | (5<<4); + $data[8] = $data[8] & 127; + $data[8] = $data[8] | 64; + my $uuid = unpack("H*",pack("C*",splice @data,0,4)); + $uuid .= "-". unpack("H*",pack("C*",splice @data,0,2)); + $uuid .= "-". unpack("H*",pack("C*",splice @data,0,2)); + $uuid .= "-". unpack("H*",pack("C*",splice @data,0,2)); + $uuid .= "-". unpack("H*",pack("C*",@data)); + return $uuid; } srand(); #Many note this as bad practice, however, forks are going on.. my $uuid;