Correct Sys::Virt version check
Fix broken LVM behavior when faced with a pre-built LVM VG/PV (as reported by Michael Fenn) git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/branches/2.8@15536 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		@@ -40,7 +40,7 @@ my $confdata; #a reference to serve as a common pointer betweer VMCommon functio
 | 
			
		||||
my $libvirtsupport;
 | 
			
		||||
$libvirtsupport = eval { 
 | 
			
		||||
    require Sys::Virt; 
 | 
			
		||||
    if (Sys::Virt->VERSION < "0.2.0") {
 | 
			
		||||
    if (Sys::Virt->VERSION =~ /^0\.[10]\./) {
 | 
			
		||||
        die;
 | 
			
		||||
    }
 | 
			
		||||
    1;
 | 
			
		||||
@@ -176,6 +176,7 @@ sub get_storage_pool_by_url {
 | 
			
		||||
    push @currpools,$virtconn->list_defined_storage_pools();
 | 
			
		||||
    my $poolobj;
 | 
			
		||||
    my $pool;
 | 
			
		||||
    my $islvm=0;
 | 
			
		||||
    foreach my $poolo (@currpools) {
 | 
			
		||||
        $poolobj = $poolo;
 | 
			
		||||
        $pool = $parser->parse_string($poolobj->get_xml_description()); #XMLin($poolobj->get_xml_description());
 | 
			
		||||
@@ -206,6 +207,7 @@ sub get_storage_pool_by_url {
 | 
			
		||||
	    my $vgname = $1;
 | 
			
		||||
	    my $checkname = $pool->findnodes("/pool/name/text()")->[0]->data;
 | 
			
		||||
	    if ($checkname eq $vgname) {
 | 
			
		||||
		$islvm=1;
 | 
			
		||||
	    	last;
 | 
			
		||||
	    }
 | 
			
		||||
        } elsif ($pool->findnodes('/pool/name/text()')->[0]->data eq $url) { #$pool->{name} eq $url) {
 | 
			
		||||
@@ -216,7 +218,7 @@ sub get_storage_pool_by_url {
 | 
			
		||||
    if ($pool) { 
 | 
			
		||||
        my $inf=$poolobj->get_info();
 | 
			
		||||
        if ($inf->{state} == 0) { #Sys::Virt::StoragePool::STATE_INACTIVE) { #if pool is currently inactive, bring it up
 | 
			
		||||
            $poolobj->build();
 | 
			
		||||
            unless ($islvm) { $poolobj->build(); } #if lvm and defined, it's almost certainly been built
 | 
			
		||||
            $poolobj->create();
 | 
			
		||||
        }
 | 
			
		||||
	eval { #we *try* to do this, but various things may interfere.
 | 
			
		||||
@@ -226,7 +228,13 @@ sub get_storage_pool_by_url {
 | 
			
		||||
        return $poolobj; 
 | 
			
		||||
    }
 | 
			
		||||
    $poolobj = $virtconn->define_storage_pool(build_pool_xml($url,$mounthost));
 | 
			
		||||
    $poolobj->build();
 | 
			
		||||
    eval { $poolobj->build(); };
 | 
			
		||||
    if ($@) { 
 | 
			
		||||
    	my $error = $@;
 | 
			
		||||
	unless ($error =~ /vgcreate.*exit status 3/ or $error =~ /pvcreate.*exit status 5/) { 
 | 
			
		||||
		die $@;
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
    $poolobj->create();
 | 
			
		||||
    eval { #wrap in eval, not likely to fail here, but calling it at all may be superfluous anyway
 | 
			
		||||
    	$poolobj->refresh();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user