Author: arkurth
Date: Wed Jun 10 20:44:03 2009
New Revision: 783502

URL: http://svn.apache.org/viewvc?rev=783502&view=rev
Log:
VCL-23
Commented out set_computer_name() call in post_load(). This isn't necessary and 
can cause problems if it's done after Cygwin SSHD is configured.

Added "return 0" statements to a few operations in post_load() to cause the 
reservation to fail if the operations fail.

Updated delete_file() to first check if the file/directory exists. It then runs 
chmod -R 777 to prevent permission denied errors from occurring.

Updated filesystem_entry_exists() to call ls -lad instead of ls -la. It would 
fail using -la if checking for the existence of a directory if root didn't have 
permission to view its contents.

Added "return 0" statement to delete_capture_configuration_files() if it's 
unable to delete an existing capture configuration directory.

Fixed bug in apply_security_templates(). It now should correctly detect if an 
OS doesn't have any templates.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows_mod.pm

Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows_mod.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows_mod.pm?rev=783502&r1=783501&r2=783502&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows_mod.pm 
(original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows_mod.pm Wed Jun 
10 20:44:03 2009
@@ -441,15 +441,15 @@
                return 0;
        }
        
-=item *
-
- Set the computer name
-
-=cut
-
-       if (!$self->set_computer_name()) {
-               notify($ERRORS{'WARNING'}, 0, "failed to set the computer 
name");
-       }
+#=item *
+#
+# Set the computer name
+#
+#=cut
+#
+#      if (!$self->set_computer_name()) {
+#              notify($ERRORS{'WARNING'}, 0, "failed to set the computer 
name");
+#      }
 
 =item *
 
@@ -470,6 +470,7 @@
 
        if (!$self->firewall_enable_ssh_private()) {
                notify($ERRORS{'WARNING'}, 0, "unable to enable SSH from 
private IP address");
+               return 0;
        }
 
 =item *
@@ -480,6 +481,7 @@
 
        if (!$self->firewall_enable_ping_private()) {
                notify($ERRORS{'WARNING'}, 0, "unable to enable ping from 
private IP address");
+               return 0;
        }
        
 =item *
@@ -521,6 +523,7 @@
        my $root_random_password = getpw();
        if (!$self->set_password('root', $root_random_password)) {
                notify($ERRORS{'WARNING'}, 0, "failed to set random root 
password");
+               return 0;
        }
 
 =item *
@@ -532,6 +535,7 @@
        my $administrator_random_password = getpw();
        if (!$self->set_password('Administrator', 
$administrator_random_password)) {
                notify($ERRORS{'WARNING'}, 0, "failed to set random 
Administrator password");
+               return 0;
        }
 
 =item *
@@ -544,7 +548,7 @@
                notify($ERRORS{'OK'}, 0, "imagemeta postoption reboot is set 
for image, rebooting computer");
                if (!$self->reboot()) {
                        notify($ERRORS{'WARNING'}, 0, "failed to reboot the 
computer");
-                       return;
+                       return 0;
                }
        }
 
@@ -856,7 +860,25 @@
        # Replace backslashes with forward slashes
        $path =~ s/\\+/\//gs;
        
+       if (!$self->filesystem_entry_exists($path)) {
+               notify($ERRORS{'DEBUG'}, 0, "file not deleted because it does 
not exist: $path");
+               return 1;
+       }
+       
        notify($ERRORS{'DEBUG'}, 0, "attempting to delete file: $path");
+       
+       # Run chmod
+       my $chmod_command = "chmod -Rv 777 \"$path\"";
+       my ($chmod_exit_status, $chmod_output) = 
run_ssh_command($computer_node_name, $management_node_keys, $chmod_command, '', 
'', 1);
+       if (defined($chmod_exit_status) && $chmod_exit_status == 0) {
+               notify($ERRORS{'DEBUG'}, 0, "set permissions to 777 on $path");
+       }
+       elsif ($chmod_exit_status) {
+               notify($ERRORS{'WARNING'}, 0, "failed to set permissions to 777 
on $path, exit status: $chmod_exit_status, output:\...@{$chmod_output}");
+       }
+       else {
+               notify($ERRORS{'WARNING'}, 0, "failed to run SSH command to set 
permissions to 777 on $path");
+       }
 
        # Assemble the Windows shell del command and execute it
        my $rm_command = "rm -rfv \"$path\"";
@@ -1087,7 +1109,7 @@
        $path =~ s/\\+/\//;
 
        # Assemble the ls command and execute it
-       my $ls_command = "ls -la \"$path\"";
+       my $ls_command = "ls -lad \"$path\"";
        my ($ls_exit_status, $ls_output) = run_ssh_command($computer_node_name, 
$management_node_keys, $ls_command, '', '', 1);
        if (defined($ls_exit_status) && $ls_exit_status == 0) {
                notify($ERRORS{'DEBUG'}, 0, "filesystem entry exists on 
$computer_node_name: $path");
@@ -4834,17 +4856,17 @@
 
        # Remove old scripts and utilities
        $self->delete_files_by_pattern('C:/Cygwin/home/root', 
'.*\(vbs\|exe\|cmd\|bat\|log\)');
-       
+
        # Remove old C:\VCL directory if it exists
        $self->delete_file('C:/VCL');
-       
+
        # Delete VCL scheduled task if it exists
        $self->delete_scheduled_task('VCL Startup Configuration');
-       
+
        ## Remove VCLprepare.cmd and VCLcleanup.cmd lines from scripts.ini file
        $self->remove_group_policy_script('logon', 'VCLprepare.cmd');
        $self->remove_group_policy_script('logoff', 'VCLcleanup.cmd');
-       
+
        # Remove old root Application Data/VCL directory
        $self->delete_file('$SYSTEMDRIVE/Documents and 
Settings/root/Application Data/VCL');
 
@@ -4852,8 +4874,9 @@
        notify($ERRORS{'OK'}, 0, "attempting to remove old configuration 
directory if it exists: $NODE_CONFIGURATION_DIRECTORY");
        if (!$self->delete_file($NODE_CONFIGURATION_DIRECTORY)) {
                notify($ERRORS{'WARNING'}, 0, "unable to remove existing 
configuration directory: $NODE_CONFIGURATION_DIRECTORY");
+               return 0;
        }
-
+       
        return 1;
 }
 
@@ -6435,21 +6458,21 @@
                notify($ERRORS{'OK'}, 0, "checking if any security templates 
exist in: $source_configuration_directory/Security");
                
                # Check each source configuration directory for .inf files 
under a Security subdirectory
-               my $find_command = "find 
$source_configuration_directory/Security -name \"*.inf\" | sort -f";
+               my $find_command = "find 
$source_configuration_directory/Security -name \"*.inf\" 2>&1 | sort -f";
                my ($find_exit_status, $find_output) = 
run_command($find_command);
-               if (defined($find_exit_status) && $find_exit_status == 0) {
+               if (defined($find_output) && grep(/No such file/i, 
@$find_output)) {
+                       notify($ERRORS{'DEBUG'}, 0, "path does not exist: 
$source_configuration_directory/Security");
+               }
+               elsif (defined($find_exit_status) && $find_exit_status == 0) {
                        notify($ERRORS{'DEBUG'}, 0, "ran find, output:\n" . 
join("\n", @$find_output));
                        push @inf_file_paths, @$find_output;
                }
-               elsif (defined($find_output) && grep(/No such file/i, 
@$find_output)) {
-                       notify($ERRORS{'DEBUG'}, 0, "path does not exist: 
$source_configuration_directory/Security, output:\...@{$find_output}");
-               }
                elsif (defined($find_exit_status)) {
                        notify($ERRORS{'WARNING'}, 0, "failed to run find, exit 
status: $find_exit_status, output:\...@{$find_output}");
                        return;
                }
                else {
-                       notify($ERRORS{'WARNING'}, 0, "failed to run ssh 
command to run find");
+                       notify($ERRORS{'WARNING'}, 0, "failed to run local 
command to run find");
                        return;
                }
        }


Reply via email to