You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2014/03/03 15:59:26 UTC

svn commit: r1573576 - in /vcl/trunk/managementnode/lib/VCL: Module.pm Module/Provisioning/VMware/VMware.pm

Author: arkurth
Date: Mon Mar  3 14:59:25 2014
New Revision: 1573576

URL: http://svn.apache.org/r1573576
Log:
VCL-685
Fixed problem in VMware.pm::get_datastore_imagerevision_names. It wasn't searching recursively.

Updated Module.pm create_vmhost_os_object to override which OS module gets created if the VM host profile image is pointing to a UnixLab image. The UnixLab module won't work under most circumstances. Changed to use regular Linux.pm.

Modified:
    vcl/trunk/managementnode/lib/VCL/Module.pm
    vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm

Modified: vcl/trunk/managementnode/lib/VCL/Module.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module.pm?rev=1573576&r1=1573575&r2=1573576&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module.pm Mon Mar  3 14:59:25 2014
@@ -545,6 +545,13 @@ sub create_vmhost_os_object {
 		return;
 	}
 	
+	# Do not try to load the UnixLab module for VM hosts -- most likely not the intended OS module
+	if ($vmhost_os_perl_package =~ /UnixLab/i) {
+		my $vmhost_os_perl_package_override = 'VCL::Module::OS::Linux';
+		notify($ERRORS{'OK'}, 0, "VM host OS image Perl package is $vmhost_os_perl_package, most likely will not work correctly, changing to Linux");
+		$vmhost_os_perl_package = $vmhost_os_perl_package_override;
+	}
+	
 	# Load the VM host OS module
 	notify($ERRORS{'DEBUG'}, 0, "attempting to load VM host OS module: $vmhost_os_perl_package (image: $vmhost_profile_image_id)");
 	eval "use $vmhost_os_perl_package";

Modified: vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
URL: http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm?rev=1573576&r1=1573575&r2=1573576&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm Mon Mar  3 14:59:25 2014
@@ -8156,16 +8156,17 @@ sub get_datastore_imagerevision_names {
 	
 	print "Retrieving list of files and directories in datastore: $datastore_base_path\n";
 	
-	my @file_paths = $self->vmhost_os->find_files($datastore_base_path, "*", 0);
-	
+	my @file_paths = $self->vmhost_os->find_files($datastore_base_path, "*.vmdk", 1);
+
 	my @datastore_imagerevision_names;
 	my @ignored;
 	
 	for my $file_path (@file_paths) {
 		$file_path =~ s/\/+$//;
 		next if $file_path eq $datastore_base_path;
-		my $file_name = $self->_get_file_name($file_path);
-		next if !$file_name;
+		
+		my $file_name = $self->_get_parent_directory_name($file_path);
+		next if !$file_name || $file_name !~ /v\d+/;
 		
 		if (defined($imagerevision_name_hash{$file_name})) {
 			push @datastore_imagerevision_names, $file_name;
@@ -8184,7 +8185,7 @@ sub get_datastore_imagerevision_names {
 	
 	print "\n";
 	if (@ignored) {
-		print "$ignored_count files and/or directories ignored: " . join(", ", @ignored) . "\n\n";
+		print "$ignored_count files and/or directories ignored: " . join("\n", @ignored) . "\n\n";
 	}
 	print "$datastore_imagerevision_name_count images found in datastore '$datastore_base_path'\n";