mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 19:32:31 +00:00 
			
		
		
		
	-Some code that may one day be chvm for real
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6655 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -823,6 +823,79 @@ sub createstorage { | ||||
|  | ||||
|  | ||||
|  | ||||
| sub chvm { | ||||
|     shift; | ||||
|     my @addsizes; | ||||
|     my %resize; | ||||
|     my $cpucount; | ||||
|     my @purge; | ||||
|     my @derefdisks; | ||||
|     my $memory; | ||||
|     @ARGV=@_; | ||||
|     require Getopt::Long; | ||||
|     Getoptions( | ||||
|         "a=s"=>\@addsizes, | ||||
|         "d=s"=>\@derefdisks, | ||||
|         "mem=s"=>\$memory, | ||||
|         "p=s"=>\@purge, | ||||
|         "resize=s%" => \%resize, | ||||
|         "cpu=s" => \$cpucount, | ||||
|         ); | ||||
|     my %useddisks; | ||||
|     if (defined $confdata->{vm}->{$node}->[0]->{storage}) { | ||||
|         my $store; | ||||
|         foreach $store (split /\|/, $confdata->{vm}->{$node}->[0]->{storage}) { | ||||
|             $store =~ s/,.*//; | ||||
|             $store =~ s/=.*//; | ||||
|             if ($store =~ /^nfs:\/\//) { | ||||
|                 my %disks = %{get_multiple_paths_by_url(url=>$store,node=>$node)}; | ||||
|                 foreach (keys %disks) { | ||||
|                     $useddisks{$disks{$_}}=1; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     if (@addsizes) { #need to add disks, first identify used devnames | ||||
|         my @diskstoadd; | ||||
|         my $location = $confdata->{vm}->{$node}->[0]->{storage}; | ||||
|         $location =~ s/.*\|//; #use the rightmost location for making new devices | ||||
|         $location =~ s/,.*//; #no comma specified parameters are valid | ||||
|         $location =~ s/=(.*)//; #store model if specified here | ||||
|         my $model = $1; | ||||
|         my $prefix='hd'; | ||||
|         if ($model eq 'scsi') { | ||||
|             $prefix='sd'; | ||||
|         } elsif ($model eq 'virtio') { | ||||
|             $prefix='vd'; | ||||
|         } | ||||
|         my @suffixes; | ||||
|         if ($prefix eq 'hd') {  | ||||
|             @suffixes=('a','b','d'..'z'); | ||||
|         } else { | ||||
|             @suffixes=('a'..'z'); | ||||
|         } | ||||
|         my @newsizes; | ||||
|         foreach (@addsizes) { | ||||
|             push @newsizes,split /,/,$_; | ||||
|         } | ||||
|         foreach (@newsizes) { | ||||
|             my $dev; | ||||
|             do { | ||||
|                 $dev = $prefix.shift(@suffixes); | ||||
|             } while ($useddisks{$dev}); | ||||
|             #ok, now I need a volume created to attach | ||||
|             push @diskstoadd,get_filepath_by_url(url=>$location,dev=>$dev,create=>$_); | ||||
|         } | ||||
|         #now that the volumes are made, must build xml for each and attempt attach if and only if the VM is live | ||||
|         my $dom = $hypconn->get_domain_by_name($node); | ||||
|         my $currstate=getpowstate($dom); | ||||
|         if ($currstate eq 'on') { #attempt live attach | ||||
|  | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub mkvm { | ||||
|  shift; #Throuw away first argument | ||||
|  @ARGV=@_; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user