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 2009/07/17 21:05:48 UTC
svn commit: r795197 -
/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
Author: arkurth
Date: Fri Jul 17 19:05:48 2009
New Revision: 795197
URL: http://svn.apache.org/viewvc?rev=795197&view=rev
Log:
VCL-23
Removed legacy Windows code from xCAT.pm::load(). These tasks are now handled by the Windows OS modules.
Modified:
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
Modified: incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm?rev=795197&r1=795196&r2=795197&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/xCAT.pm Fri Jul 17 19:05:48 2009
@@ -946,191 +946,16 @@
# Perform post load tasks
- # Windows specific routines
+ # Check if OS module has implemented a post_load() subroutine
if ($self->os->can('post_load')) {
# If post-load has been implemented by the OS module, don't perform these tasks here
- # new.pm calls the Windows module's post_load() subroutine to perform the same tasks as below
- notify($ERRORS{'OK'}, 0, "post_load() has been implemented by the OS module, skipping these tasks in xCAT.pm, returning 1");
+ # new.pm calls the OS module's post_load() subroutine
+ notify($ERRORS{'DEBUG'}, 0, "post_load() has been implemented by the OS module, returning 1");
return 1;
}
- elsif ($image_os_name =~ /winxp|wxp|win2003|winvista/) {
-
- insertloadlog($reservation_id, $computer_id, "info", "randomizing system level passwords");
-
- #change passwords for root and administrator account
- #skip changing root password for imageprep loads
- if (changewindowspasswd($computer_node_name, "root")) {
- notify($ERRORS{'OK'}, 0, "Successfully changed password, account $computer_node_name,root");
- }
-
- if (changewindowspasswd($computer_node_name, "administrator")) {
- notify($ERRORS{'OK'}, 0, "Successfully changed password, account $computer_node_name,administrator");
- }
-
- #disable remote desktop port
- if (remotedesktopport($computer_node_name, "DISABLE")) {
- notify($ERRORS{'OK'}, 0, "remote desktop disabled on $computer_node_name");
- }
- else {
- notify($ERRORS{'OK'}, 0, "remote desktop not disable on $computer_node_name");
- }
-
- #due to sysprep sshd is set to manual start
- if (_set_sshd_startmode($computer_node_name, "auto")) {
- notify($ERRORS{'OK'}, 0, "successfully set sshd service on $computer_node_name to start auto");
- }
- else {
- notify($ERRORS{'WARNING'}, 0, "failed to set sshd service on $computer_node_name to start auto");
- }
-
- #check for root logged in on console and then logoff
- notify($ERRORS{'OK'}, 0, "checking for any console users $computer_node_name");
-
- my @QA = run_ssh_command($computer_node_name, $IDENTITY_wxp, "cmd /c qwinsta.exe", "root");
- foreach my $r (@{$QA[1]}) {
- if ($r =~ /([>]?)([-a-zA-Z0-9]*)\s+([a-zA-Z0-9]*)\s+ ([0-9]*)\s+([a-zA-Z]*)/) {
- my $state = $5;
- my $session = $2;
- my $user = $3;
- if ($5 =~ /Active/) {
- notify($ERRORS{'OK'}, 0, "detected $user on $session still logged on $computer_node_name $r, sleeping 7 before logging off");
- sleep 7;
- my @LF = run_ssh_command($computer_node_name, $IDENTITY_wxp, "cmd /c logoff.exe $session");
- foreach my $l (@{$LF[1]}) {
- notify($ERRORS{'OK'}, 0, "output from attempt to logoff $user on $session");
- }
-
- }
- } ## end if ($r =~ /([>]?)([-a-zA-Z0-9]*)\s+([a-zA-Z0-9]*)\s+ ([0-9]*)\s+([a-zA-Z]*)/)
- } ## end foreach my $r (@{$QA[1]})
-
- #reboot the box based on options
- if ($imagemeta_postoption =~ /reboot/i) {
- my $rebooted = 1;
- my $reboot_wait_count = 0;
- my @retarray;
- while ($rebooted) {
- if ($reboot_wait_count > 55) {
- notify($ERRORS{'CRITICAL'}, 0, "waited $reboot_wait_count on reboot after auto_create_image on $computer_node_name");
- $retarray[1] = "waited $reboot_wait_count on reboot after netdom on $computer_node_name";
- return @retarray;
- }
- notify($ERRORS{'OK'}, 0, "$computer_node_name not completed reboot sleeping for 25");
- sleep 25;
- if (_pping($computer_node_name)) {
-
- #it pingable check if sshd is open
- notify($ERRORS{'OK'}, 0, "$computer_node_name is pingable, checking sshd port");
- my $sshd = _sshd_status($computer_node_name, $image_name, $image_os_type);
- if ($sshd =~ /on/) {
- $rebooted = 0;
- notify($ERRORS{'OK'}, 0, "$computer_node_name sshd is open");
- }
- else {
- notify($ERRORS{'OK'}, 0, "$computer_node_name sshd NOT open yet,sleep 5");
- sleep 5;
- }
- } #_pping
- $reboot_wait_count++;
-
- } #while
- } #reboot
-
- #win2003 only - need to set private adapter to static without a gateway
- # win2003 and probably vista zero out one gateway and we only need a gateway on the public adapter
- # so we need to remove the one on the private side
- # downside - we need to reset it to dhcp before making an image.....
- if ($image_os_name =~ /^(win2003)/) {
- insertloadlog($reservation_id, $computer_id, "info", "detected OS which requires network gateway modification");
- notify($ERRORS{'OK'}, 0, "detected win2003 OS, proceeding to change private adapter to static from dhcp on $computer_node_name");
- my %ip;
- my $myadapter;
- my @ipconfig = run_ssh_command($computer_node_name, $IDENTITY_wxp, "ipconfig -all", "root");
-
- # build hash of needed info and set the correct private adapter.
- foreach my $a (@{$ipconfig[1]}) {
- $myadapter = $1 if ($a =~ /Ethernet adapter (.*):/);
- $ip{$myadapter}{"private"} = 1
- if ($a =~ /IP Address([\s.]*): $privateIP/);
- $ip{$myadapter}{"subnetmask"} = $2
- if ($a =~ /Subnet Mask([\s.]*): ([.0-9]*)/);
- }
-
- my $privateadapter;
- my $subnetmask;
-
- foreach my $key (keys %ip) {
- if (defined($ip{$key}{private})) {
- if ($ip{$key}{private}) {
- $privateadapter = "\"$key\"";
- $subnetmask = $ip{$key}{subnetmask};
- }
- }
- }
-
- notify($ERRORS{'OK'}, 0, "attempted to convert private adapter on $computer_node_name to static with no gateway");
-
- #not using run_ssh_command here
- if (open(NETSH, "/usr/bin/ssh -x -i $IDENTITY_wxp $computer_node_name \"netsh interface ip set address name=\\\"$privateadapter\\\" source=static addr=$privateIP mask=$subnetmask\" & 2>&1 |")) {
-
- #losing connection
- my $go = 1;
- while ($go) {
-
- #print "hi\n";
- sleep 4;
- if (open(PS, "ps -ef |")) {
- my @ps = <PS>;
- close(PS);
- sleep 4;
- foreach my $p (@ps) {
- if ($p =~ /$computer_node_name netsh interface/) {
- if ($p =~ /(root)\s+([0-9]*)/) {
- if (open(KILLIT, "kill -9 $2 |")) {
- close(KILLIT);
- close(NETSH);
- notify($ERRORS{'OK'}, 0, "killing ssh $computer_node_name netsh process");
- }
- }
- }
- } ## end foreach my $p (@ps)
- } ## end if (open(PS, "ps -ef |"))
-
- $go = 0;
- } ## end while ($go)
- } ## end if (open(NETSH, "/usr/bin/ssh -x -i $IDENTITY_wxp $computer_node_name \"netsh interface ip set address name=\\\"$privateadapter\\\" source=static addr=$privateIP mask=$subnetmask\" & 2>&1 |"...
-
- #make sure it came back
- if (_sshd_status($computer_node_name, $image_name, $image_os_type)) {
- notify($ERRORS{'OK'}, 0, "successful $computer_node_name is accessible after static assignment");
- insertloadlog($reservation_id, $computer_id, "info", "SUCCESS network gateway modification successful");
- }
- else {
-
- }
-
- #disable NetBios
- notify($ERRORS{'OK'}, 0, "attempted to convert private adapter on $computer_node_name to static with no gateway");
- my $path1 = "$TOOLS/disablenetbios.vbs";
- my $path2 = "$computer_node_name:disablenetbios.vbs";
- if (run_scp_command($path1, $path2, $IDENTITY_wxp)) {
- notify($ERRORS{'DEBUG'}, 0, "copied $path1 to $path2");
- my @DNBIOS = run_ssh_command($computer_node_name, $IDENTITY_wxp, "cscript.exe //Nologo disablenetbios.vbs", "root");
- foreach my $l (@{$DNBIOS[1]}) {
- if ($l =~ /denied|socket/) {
- notify($ERRORS{'WARNING'}, 0, "failed to disablenetbios.vbs @{ $DNBIOS[1] }");
- }
- }
-
- } ## end if (run_scp_command($path1, $path2, $IDENTITY_wxp...
- else {
- notify($ERRORS{'WARNING'}, 0, "run_scp_command failed to copy $path1 to $path2");
- }
-
- } ## end if ($image_os_name =~ /^(win2003)/)
- } ## end elsif ($image_os_name =~ /winxp|wxp|win2003|winvista/) [ if ($self->os->can('post_load'))
-
+
# Linux post-load tasks
+ # TODO: The following should be removed once Linux.pm post_load() has been implemented
elsif ($image_os_type =~ /linux/i) {
#linux specfic routines